首页 > 解决方案 > 问题 docker 与 pm2 和 nginx

问题描述

我在容器上运行 pm2 应用程序时遇到问题,我尝试通过 docker 端口和 nginx 代理访问,但这些解决方案都不起作用。这是我的码头配置:

version: '3.5'

services:
  webapp:
    build:
      context: .
    image: ${DOCKER_IMAGE}
    container_name: mypm2app
    stdin_open: true 
    networks:
      - "default"
    restart: always
    ports:
      - "8282:8282"
    extra_hosts:
      - host.local:${LOCAL_IP}

  db:
    image: mongo:4.2.6
    container_name: mongodb
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
      MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}
    volumes:
      - ${MONGO_SCRIPT_PATH}:${MONGO_SCRIPT_DESTINATION_PATH}
    networks:
      - "default"

networks:
  default:
    external:
      name: ${NETWORK_NAME}

我也有这个dockerfile:

FROM image
WORKDIR /var/www/html/path
COPY package.json /var/www/html/path
RUN npm install
COPY . /var/www/html/path
EXPOSE 8282/tcp
CMD pm2-runtime start ecosystem.config.js --env development

pm2 正在启动服务,但我无法通过 localhost:port 访问它。我尝试添加一个 nginx 代理:

nginx:
        depends_on: 
          -  webapp
        restart: always
        build: 
            dockerfile: Dockerfile.dev
            context: ./nginx
        ports:
          -  "3002:80"
        networks:
          default: 
           ipv4_address: ${nginx_ip}$

使用这个 docker 文件

FROM nginx

COPY ./default.conf /etc/nginx/conf.d/default.conf

这是nginx配置,default.conf

upstream mypm2app {
  server mypm2app:8282;
}

server {
        listen 80;
        server_name mypm2app.local;

        location /  {
                proxy_pass    http://mypm2app/;
        }
}

我将不胜感激对此问题的任何建议或答案。

标签: node.jsdockernginxdockerfilepm2

解决方案


推荐阅读