【问题标题】:How to configure Nginx with Docker to run Node and Mongo in the correct way如何使用 Docker 配置 Nginx 以正确方式运行 Node 和 Mongo
【发布时间】:2020-11-08 19:49:33
【问题描述】:

我正在 Node Mongo 中构建一个项目,并使用 Docker 和 Nginx 在我的本地计算机 MacBook pro-Catalina 上运行所有项目。 我有几个我无法自己解决的问题,我不知道如何配置 Nginx 和 Docker 以使所有工作正常。文章最后会展示我的 Dockerfile、Docker compose 和 Nginx。

  1. 当我运行我的容器时,Node 容器无法连接到 Mongo DB 并出现此错误:failed to connect to server [127.0.0.1:27017] on first connect 但通过 GUI 作为指南针我能够连接到相同的 URL。
  2. 编辑我尝试使用容器的名称,它的 IP bu 错误 failed to connect to server [wetaxitask_mongodb:27017] on first connect [Error: connect ECONNREFUSED 172.18.0.3:27017
  3. 下一个问题是我收到 Python 错误,即使我将它安装在我的容器上,错误如屏幕截图所示,因为我不知道如何描述:
  4. 当所有端点都在运行时,我试图响应的任何端点都是 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


    【解决方案1】:

    尝试将主机名从 localhost(127.0.0.1) 更改为 mongodb(在 docker-compose 中定义的服务名称)。 Docker dns 魔法将完成剩下的工作。

    编辑:将它们添加到 docker compose 中的公共网络,容器应该能够在请求中使用它们的名称作为主机名进行通信

    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
        networks:
          - my-network
    
      mongodb:
        container_name: wetaxitask_mongodb
        image: mongo:latest
        restart: always
        ports:
          - 27017:27017
        volumes:
          - ./data:/data/db
        environment:
          - MONGO_INITDB_DATABASE=wetaxitask
        networks:
          - my-network
    
      redis:
        container_name: wetaxitask_redis
        image: redis:latest
        ports:
          - 6379:6379
        networks:
          - my-network
    
    networks:
      my-network:
    #this should define a network called my-network with default settings
    

    【讨论】:

    • 不工作我试过mongodb://wetaxitask_mongodb: 和IP也一样请给出不同的答案
    • 什么意思
    • 很奇怪。你确定你在你的docker-compose中添加了我的帖子中的最后几行吗?这应该定义网络
    • 我还收到一个错误 Unsupported config option for services。
    • 您提出的这种方式是给出一个不受支持的错误,根本无法使用它
    猜你喜欢
    • 2021-03-02
    • 2019-07-09
    • 2021-02-18
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2015-07-20
    相关资源
    最近更新 更多