nginx:Docker 容器无法启动
nginx: Docker container fails to start
试图在四个容器中 Dockerize 应用程序时,Nginx 容器因错误而失败。具体来说,当我 运行 docker-compose up
它显示:
nginx_1 | 2019/12/25 23:00:50 [emerg] 1#1: host not found in upstream "client:8080" in /etc/nginx/conf.d/default.conf:2
nginx_1 | nginx: [emerg] host not found in upstream "client:8080" in /etc/nginx/conf.d/default.conf:2
docker-compose.yml
和 nginx 配置以及 [ETA] nginx 容器的 Dockerfile.dev
包含在下面。我尝试过的事情:
- 在
docker-compose.yml
中,将nginx容器设置为
depends_on:
- client
- 在
default.conf
中,在服务器块的location /
部分添加resolver 127.0.0.11;
我对 nginx 和 Docker 有点陌生。所以我很感激任何帮助或见解。
docker-compose.yml
version: '3'
services:
db:
image: 'postgres:latest'
nginx:
build:
dockerfile: Dockerfile.dev
context: ../nginx-glen
restart: always
ports:
- '3050:80'
api:
build:
dockerfile: Dockerfile.dev
context: ../cornish-glen
volumes:
- /app/node_modules
- ../cornish-glen:/app
depends_on:
- db
environment:
- PGUSER=postgres
- PGHOST=postgres
- PGDATABASE=turnip_glen
- PGPASSWORD=********
- PGPORT=5432
client:
build:
dockerfile: Dockerfile.dev
context: .
depends_on:
- api
volumes:
- /app/node_modules
- .:/app
environment:
- GRAPHQL_ORIGIN=http://api:3099
default.conf
upstream client {
server client:8080;
}
upstream api {
server api:3099;
}
server {
listen 80;
location / {
proxy_pass http://client;
}
location /sockjs-node {
proxy_pass http://client;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
location /graphql {
proxy_pass http://api;
}
}
预计到达时间 nginx-glen/Dockerfile.dev
FROM nginx
COPY ./default.conf /etc/nginx/conf.d/default.conf
答案就在webpack开发服务器上,需要通过以下方式对host进行灵活指示:
// Only showing the devServer object here:
devServer: {
// These two lines are the relevant ones:
// ---
host: '0.0.0.0',
disableHostCheck: true, // TODO: insecure, but probably fine for dev environment
// ---
contentBase: "./public",
index: ''
}
我还要指出 Docker 日志中 nginx 容器的 [emerg]
消息似乎并未阻止应用程序 运行.
试图在四个容器中 Dockerize 应用程序时,Nginx 容器因错误而失败。具体来说,当我 运行 docker-compose up
它显示:
nginx_1 | 2019/12/25 23:00:50 [emerg] 1#1: host not found in upstream "client:8080" in /etc/nginx/conf.d/default.conf:2
nginx_1 | nginx: [emerg] host not found in upstream "client:8080" in /etc/nginx/conf.d/default.conf:2
docker-compose.yml
和 nginx 配置以及 [ETA] nginx 容器的 Dockerfile.dev
包含在下面。我尝试过的事情:
- 在
docker-compose.yml
中,将nginx容器设置为
depends_on:
- client
- 在
default.conf
中,在服务器块的location /
部分添加resolver 127.0.0.11;
我对 nginx 和 Docker 有点陌生。所以我很感激任何帮助或见解。
docker-compose.yml
version: '3'
services:
db:
image: 'postgres:latest'
nginx:
build:
dockerfile: Dockerfile.dev
context: ../nginx-glen
restart: always
ports:
- '3050:80'
api:
build:
dockerfile: Dockerfile.dev
context: ../cornish-glen
volumes:
- /app/node_modules
- ../cornish-glen:/app
depends_on:
- db
environment:
- PGUSER=postgres
- PGHOST=postgres
- PGDATABASE=turnip_glen
- PGPASSWORD=********
- PGPORT=5432
client:
build:
dockerfile: Dockerfile.dev
context: .
depends_on:
- api
volumes:
- /app/node_modules
- .:/app
environment:
- GRAPHQL_ORIGIN=http://api:3099
default.conf
upstream client {
server client:8080;
}
upstream api {
server api:3099;
}
server {
listen 80;
location / {
proxy_pass http://client;
}
location /sockjs-node {
proxy_pass http://client;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
location /graphql {
proxy_pass http://api;
}
}
预计到达时间 nginx-glen/Dockerfile.dev
FROM nginx
COPY ./default.conf /etc/nginx/conf.d/default.conf
答案就在webpack开发服务器上,需要通过以下方式对host进行灵活指示:
// Only showing the devServer object here:
devServer: {
// These two lines are the relevant ones:
// ---
host: '0.0.0.0',
disableHostCheck: true, // TODO: insecure, but probably fine for dev environment
// ---
contentBase: "./public",
index: ''
}
我还要指出 Docker 日志中 nginx 容器的 [emerg]
消息似乎并未阻止应用程序 运行.