首页 > 解决方案 > 无法使用 docker + traefik + nodejs 堆栈获取 /myNodeApp

问题描述

我正在尝试执行以下操作:

我的文件结构是:

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/distdist 文件夹)的事实有关。但我从未指定这一点。当我在本地计算机上查看这些文件夹时,它们不存在。

关于如何使它工作的任何想法?

标签: node.jsdocker-composetraefik

解决方案


您没有提供您的位置Dockerfile

修改你docker-compose.yml

services:
    myNodeApp:
      container_name: myNodeApp
      build:
          context: ./www/app

删除图像

image: node:14

进一步参考


推荐阅读