Docker 在生产中编写

Docker Compose In Production

尝试使用 docker-compose 构建一个简单的 Node.js 应用程序。虽然我 运行 在 Django 应用程序中遇到了同样的问题,所以我认为我只是错过了一些重要的步骤。这是我的 Dockerfile:

FROM node:4.2.1
CMD mkdir -p /var/app
COPY . /var/app
EXPOSE 3000
CMD node /var/app/index.js

当我 运行 docker 组合指向数字海洋机器时,它会抛出一个节点错误,表明它无法在 /var/app 中找到代码。除了 docker?

之外,我还应该使用其他机制将我的代码加载到机器上吗?

尝试删除 mkdir 步骤。您还需要设置工作目录。

CMD mkdir -p /var/app是错误的。一个Dockerfile中应该只有一个CMD,通常在最后。

只会执行继承 docker 图像链中的最后一个 CMD 指令。

您应该改用 RUN

来自Dockerfile reference

There can only be one CMD instruction in a Dockerfile. If you list more than one CMD then only the last CMD will take effect.

The main purpose of a CMD is to provide defaults for an executing container.