【发布时间】:2020-11-08 19:49:33
【问题描述】:
我正在 Node Mongo 中构建一个项目,并使用 Docker 和 Nginx 在我的本地计算机 MacBook pro-Catalina 上运行所有项目。 我有几个我无法自己解决的问题,我不知道如何配置 Nginx 和 Docker 以使所有工作正常。文章最后会展示我的 Dockerfile、Docker compose 和 Nginx。
- 当我运行我的容器时,Node 容器无法连接到 Mongo DB 并出现此错误:
failed to connect to server [127.0.0.1:27017] on first connect但通过 GUI 作为指南针我能够连接到相同的 URL。 - 编辑我尝试使用容器的名称,它的 IP bu 错误
failed to connect to server [wetaxitask_mongodb:27017] on first connect [Error: connect ECONNREFUSED 172.18.0.3:27017 - 下一个问题是我收到 Python 错误,即使我将它安装在我的容器上,错误如屏幕截图所示,因为我不知道如何描述:
- 当所有端点都在运行时,我试图响应的任何端点都是 Nginx 欢迎页面,所以可能我做错了 conf 本身
Dockerfile:
# Developpment stage
FROM node:12.18-alpine AS base-builder
RUN apk update
RUN apk add --no-cache python make g++
RUN apk add --no-cache libc6-compat
WORKDIR /usr/src/app
COPY ["tsconfig.json", "package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
ADD . /usr/src/app
COPY ./.env /usr/src/app/.env
RUN npm cache clean --force
RUN npm install
# ------------------------------------------------------
# Production Build
# ------------------------------------------------------
FROM nginx:1.19.0-alpine
RUN apk add --no-cache --repository http://nl.alpinelinux.org/alpine/edge/main libuv \
&& apk add --update nodejs npm
WORKDIR /usr/src/app
RUN ls -l /usr/src/app/
COPY --from=0 /usr/src/app/ .
RUN rm /etc/nginx/conf.d/default.conf
RUN rm -rf /docker-entrypoint.d
COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 3000
EXPOSE 80
#CMD ["nginx", "-g", "daemon off;","npm", "start"]
CMD nginx ; exec npm start
Docker 撰写:
version: '3.8'
services:
wetaxitask:
container_name: wetaxitask_api_dev
image: wetaxitask
restart: always
build: .
depends_on:
- mongodb
- redis
env_file: .env
ports:
- 8080:80
links:
- redis
- mongodb
mongodb:
container_name: wetaxitask_mongodb
image: mongo:latest
restart: always
ports:
- 27017:27017
volumes:
- ./data:/data/db
environment:
- MONGO_INITDB_DATABASE=wetaxitask
redis:
container_name: wetaxitask_redis
image: redis:latest
ports:
- 6379:6379
Nginx:
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /welcome {
proxy_pass http://127.0.0.1:3000;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
【问题讨论】:
标签: node.js mongodb docker nginx