node.js - 问题 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/;
}
}
我将不胜感激对此问题的任何建议或答案。
解决方案
推荐阅读
- jhipster - 使用 Jhipster 配置 Infinispan 分布式缓存
- apache-kafka - Apache Kafka 代理未将指标发送到 Confluent 控制面板
- python - 如何在不同的平台/技术中使用经过训练的神经网络?
- awk - 如何将两个 awk 命令的输出合并到一个制表符分隔的文件中?
- typescript - 使用 TypeScript 将箭头函数分配给通用函数类型
- javascript - data.push 不工作抽搐机器人
- sql-server - 将 SQL Server 迁移到 Oracle 时出错
- angular - 通过 CLI 创建 Angular 2 项目的问题
- c++ - 为什么 C++ 中的线程在执行时给出不同的输出?
- c++ - C++中优先级队列的结构排序标准