docker - Docker 容器正在运行但仍无法访问应用程序
问题描述
我的 docker compose 文件似乎运行得很好,在 docker 仪表板中,我看到相应的容器正在工作。当我转到 http://localhost:8080/ 时,我看到的只是一条错误消息,内容为:“此页面无法正常工作。localhost 没有发送任何数据。ERR_EMPTY_RESPONSE'。我不知道如何解决这个问题。我在某处看到将 localhost 替换为“0.0.0.0”,但不确定如何在这种情况下执行此操作,我觉得我已经看到它与 localhost 一起工作,所以我不确定如何处理这些信息。我检查了其他来源,看看我做错了什么,但没有找到好的解决方案。我很想就此事征求任何建议!
码头工人撰写
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:
码头工人开发
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
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
服务器.js
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}`));
包.json
"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"
解决方案
您打开的和发布的端口不匹配。您需要修复您的docker-compose.yml
, in .services.dev.ports.[0]
(将第二个端口更改为使用 Node 内部打开的端口):
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:
推荐阅读
- javascript - 在浏览器中检测上传的图片格式是否正确
- android - 我们可以使用颤振,也用于黑莓操作系统和 Windows 操作系统移动应用程序的创建
- curl - 文档翻译文本 3.0 中的错误代码 401000
- json - 忽略 JSON 响应中 IntSequenceGenerator 的值
- django - 将产品添加到管理面板时显示异常
- jmeter - “jp@gc - 随时间变化的响应时间”JMeter 中的侦听器未显示在摘要报告侦听器中显示的最大响应时间,它显示平均值
- javascript - 学习 Webpack:如何在 webpack 中包含库并在浏览器中使用
- java - 如何使我的带有 queue.poll() 值的变量可供其他活动访问
- python - 用 Beautiful Soup 提取文本
- javascript - javascript在推送时修改数组内对象的键值