node.js - 无法使用 docker + traefik + nodejs 堆栈获取 /myNodeApp
问题描述
我正在尝试执行以下操作:
- 公开运行一个 dockerized nodejs 应用程序
- 使用 traefik 作为 HTTPS 的反向代理
我的文件结构是:
root/
|_ docker-compose.yml
|_www/
|_ app/
|_ Dockerfile
|_ package.json
|_ server.js
|_ static/
我的docker-compose.yml
文件是:
version: "3.3"
services:
myNodeApp:
container_name: myNodeApp
build:
context: ./www/app
environment:
- NODE_ENV=production
networks:
- default
labels:
- "traefik.enable=true"
- "traefik.http.routers.myNodeApp.rule=Host(`my.url.example.com`) && PathPrefix(`/myNodeApp`)"
- "traefik.http.routers.myNodeApp.tls.certresolver=myresolver"
- traefik.docker.network=myExternalNetworkName
volumes:
- /home/myUsername/myProjectDir/www/app:/var/www/html
networks:
default:
external:
name: myExternalNetworkName
我的 Dockerfile 是:
FROM node:14
# Create app directory
WORKDIR /home/myUsername/myProjectDir/www/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# Bundle app source
COPY . .
EXPOSE 3000
CMD [ "node", "server.js" ]
当我写$ docker-compose up
时,我得到:
Attaching to myProjectDir_1
myNodeApp_1 | serving on port: 3000
myNodeApp_1 | base dir: /usr/src/app
myNodeApp_1 | dist folder: /usr/src/app/dist
当我去时https://my.url.example.com/myNodeApp
,我得到:
cannot GET /myNodeApp
现在我怀疑这可能与日志显示它/usr/src/app
用作基本目录(和/usr/src/app/dist
dist 文件夹)的事实有关。但我从未指定这一点。当我在本地计算机上查看这些文件夹时,它们不存在。
关于如何使它工作的任何想法?
解决方案
您没有提供您的位置Dockerfile
修改你docker-compose.yml
的
services:
myNodeApp:
container_name: myNodeApp
build:
context: ./www/app
删除图像
image: node:14
推荐阅读
- esb - 如何暂停消息处理一段时间?
- java - Hibernate Validator 的奇怪行为
- c# - 何时使用 Task.Run 而不是
- npm - 让 devextreme dataGrid 与 webpack 一起工作
- c++ - 调用外部函数会强制从内存中加载吗?
- regex - 正则表达式使用vim搜索并删除括号()中的所有内容
- floating-point - 将 ARM gcc 生成的库从一个软浮点 bi 转换为硬浮点 abi
- regex - Hive - 删除 DDL 表创建中的“”引号
- php - Bootstrap 4 navwalker - 多级菜单
- java - 使用 Micrometer 的自定义指标在 Prometheus 端点中不可用