【问题标题】:Docker compose for node server fails用于节点服务器的 Docker 撰写失败
【发布时间】:2019-02-05 08:50:30
【问题描述】:

我编写了一个通过 npm 脚本 (npm run dev) 运行的节点服务器。 我为它创建了以下 Dockerfile:

FROM node:10.12.0

ARG COMMIT_REF
ARG BUILD_DATE

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

ENV APP_COMMIT_REF=${COMMIT_REF} \
    APP_BUILD_DATE=${BUILD_DATE}

ENV PORT 8009

EXPOSE 8009

CMD [ "npm", "run", "server" ]

使用以下命令构建和运行服务器:
docker build . -t serverdocker run -it -p 8009:8009 --env-file .env server 效果很好,服务器运行并暴露在 8009 端口上。

不,我尝试为它创建docker-compose.yml。这是我写的:

version: '3'

services:
    server:
        image: server
        build: .
        env_file:
            - .env
        volumes:
            - .:/usr/src/app
            - /usr/src/app/node_modules
        working_dir: /.
        ports:
            - 8009:8009

当我使用 docker-compose up 运行它时,我得到:

Starting bed_server_1 ... done
Attaching to bed_server_1
server_1  | npm ERR! path /package.json
server_1  | npm ERR! code ENOENT
server_1  | npm ERR! errno -2
server_1  | npm ERR! syscall open
server_1  | npm ERR! enoent ENOENT: no such file or directory, open '/package.json'
server_1  | npm ERR! enoent This is related to npm not being able to find a file.
server_1  | npm ERR! enoent
server_1  |
server_1  | npm ERR! A complete log of this run can be found in:
server_1  | npm ERR!     /root/.npm/_logs/2019-02-04T22_27_50_916Z-debug.log
bed_server_1 exited with code 254

知道有什么问题吗?

【问题讨论】:

    标签: node.js docker npm docker-compose


    【解决方案1】:

    图像的 CMD 在它启动的任何目录中运行 npm run serverdocker-compose.yml working_dir: / 告诉容器在根目录中启动。那不是你想要的;您希望容器在您将其源代码复制到的目录中启动。

    如果您删除 working_dir: 行,您可能会解决您的直接问题。

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 1970-01-01
      • 2017-06-25
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多