首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker容器正在运行,但仍无法访问应用程序

Docker容器正在运行,但仍无法访问应用程序
EN

Stack Overflow用户
提问于 2020-11-07 23:03:19
回答 1查看 704关注 0票数 0

我的docker编写文件似乎运行得很好,在docker仪表板中,我看到了适当的容器在工作。当我转到http://localhost:8080/时,我看到的是一条错误消息:‘这个页面不工作。本地主机没有发送任何数据。ERR_EMPTY_RESPONSE’。我不确定如何解决这个问题。我看到了用'0.0.0.0‘替换localhost的地方,但我不确定如何在这种情况下做到这一点,我觉得我已经看到它与localhost一起工作,所以我不确定如何处理这些信息。我已经检查了其他来源,看看我做错了什么,也没有找到一个好的解决方案。我很乐意就这件事征求任何意见!

docker compose

代码语言:javascript
复制
version: '3'
services:
  dev:
    image: filamentgraphql/filament-dev
    container_name: 'filament-dev-hot'
    ports: 
      - '8080:8080'
    volumes:
      - .:/usr/src/app
      - node_modules:/usr/src/app/node_modules
    command: npm run dev:hot
  redis-server:
    image: 'redis'
    volumes:
      - "./data/redis:/usr/src/app/data"
volumes:
  node_modules:

docker-dev

代码语言:javascript
复制
FROM node:12.16.1
RUN npm install --global webpack
WORKDIR /usr/src/app
COPY package*.json /usr/src/app/
RUN npm install
EXPOSE 4000

dockerfile

代码语言:javascript
复制
FROM node:12.16.1
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN npm install
RUN npm run build
EXPOSE 4000
ENTRYPOINT node ./server/server.js

server.js

代码语言:javascript
复制
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const redis = require("redis");
require('dotenv').config();

// Mongo DB Setup
const mongoose = require('mongoose');
const MONGO_URI = process.env.MONGO_URI;
mongoose
  .connect(MONGO_URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    dbName: 'Filament',
  })
  .then(() => console.log('Connected to Mongo DB'))
  .catch((err) => console.log(err));

// Redis Setup
const client = redis.createClient({
  host: 'redis-server',
  port: 6379
})
client
  .on("error", err => console.log("Error " + err))
  .on('connect', () => console.log('Redis client connected'));

// Filament Setup
const filamentMiddlewareWrapper = require('../filament-library/filamentMiddleware')
const filamentMiddleware = filamentMiddlewareWrapper(client)

// Express setup
const app = express()
const PORT = 4000;
const schema = require('./schema');

app.use(express.json())
app.use('/filament', filamentMiddleware)
app.use(
  '/graphql',
  graphqlHTTP((req) => ({
    schema,
    graphiql: true,
    context: {
      req,
    }
  })),
);

app.listen(PORT, '0.0.0.0', () => console.log(`GraphQL server is on port: ${PORT}`));

package.json

代码语言:javascript
复制
  "scripts": {
    "test": "jest",
    "build": "webpack",
    "client": "webpack-dev-server --hot",
    "start": "nodemon server/server.js",
    "json-server": "json-server --watch fake-database.json",
    "dev": "npm run client & npm run start & npm run json-server & redis-server",
    "dev:hot": "npm run client & npm run start"
EN

回答 1

Stack Overflow用户

发布于 2020-11-08 00:03:46

您打开的端口和发布的端口不匹配。您需要在.services.dev.ports.[0]中修复您的docker-compose.yml (使用Node将第二个端口更改为内部打开的端口):

代码语言:javascript
复制
version: '3'
services:
  dev:
    image: filamentgraphql/filament-dev
    container_name: 'filament-dev-hot'
    ports:
      # Fix port here
      - '8080:4000'
    volumes:
      - .:/usr/src/app
      - node_modules:/usr/src/app/node_modules
    command: npm run dev:hot
  redis-server:
    image: 'redis'
    volumes:
      - "./data/redis:/usr/src/app/data"
volumes:
  node_modules:
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64729088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档