Joh*_*ika 4 node.js npm docker docker-compose
我想使用 docker-compose 启动 2 个容器。一种用于数据库,另一种用于使用nodeDockerHub 上默认映像的节点服务器。在节点容器中,我想安装一个作为卷进行源代码控制的本地文件夹。我见过很多示例,其中创建了一个 Dockerfile,将源文件复制到映像中,然后RUN npm install在 Dockerfile 中使用命令。但这会导致创建一个包含源文件的新映像。就我而言,我不想将源代码文件保存在节点映像中。所以我希望entrypointdocker-compose 文件中的 Node 容器能够npm install像 一样运行npm start,但我似乎无法让该组合正常工作。这是我的docker-compose.yml:
version: "3.8"
services:
server:
container_name: my_server
image: node:12.16.1
ports:
- "8000:8000"
volumes:
- ../my-server-files-source-controlled:/var/www
working_dir: /var/www
entrypoint: ["npm", "start"]
networks:
- my-network
db:
container_name: my_database
image: postgres
environment:
{ommitted}
ports:
- "5432:5432"
networks:
- my-network
networks:
my-network:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
上面的命令工作正常,但是当我将 更改entrypoint为 include时npm install,它失败了。我尝试过以下示例以及许多其他示例,但它们都失败了:
entrypoint: ["npm", "install", "&&", "npm", "start"]
entrypoint: ["npm install", "npm start"]
entrypoint: "npm install && npm start"
Run Code Online (Sandbox Code Playgroud)
看来我可以拥有npm install或npm startin entrypoint,但不能两者兼而有之。如何让这两个命令在我的 docker-compose 文件中工作?
lxg*_*lxg 16
如果您想使用多个命令,可以使用以下命令bash -c "commands":
services:
myservice:
command: bash -c "npm install && npm start"
Run Code Online (Sandbox Code Playgroud)
顺便说一句,在生产部署中,我建议使用npm ci而不是npm install. 还可以考虑使用--only=prod和--no-audit标志(取决于您的设置)。
| 归档时间: |
|
| 查看次数: |
17389 次 |
| 最近记录: |