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
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.
尝试使用 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
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.