【发布时间】:2021-06-14 21:59:04
【问题描述】:
我正在尝试执行以下操作:
- 公开运行 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 文件夹)的事实有关。但我从未指定这一点。当我在本地计算机上查看这些文件夹时,它们不存在。
关于如何让它发挥作用的任何想法?
【问题讨论】:
标签: node.js docker-compose traefik