Meh*_*hdi 2 docker docker-compose
我有一个 cli 应用程序,可以根据输入参数运行两个服务。
1- app serve // to run a web server
2- app work // to run a long-running background worker
Run Code Online (Sandbox Code Playgroud)
他们共享相同的代码。部署时我需要什么?
A: two separate containers or
B: two processes in the same container
Run Code Online (Sandbox Code Playgroud)
docker-compose 配置是什么?
如果您希望每个容器有一个进程,我建议使用一个通用映像(和 Dockerfile),它可以作为工作程序或服务器运行。
Dockerfile 文件应该设置应用程序的入口点,例如,ENTRYPOINT ["/path_to_my_app/myapp"]但不是CMD. 当用户从命令行调用命令时,他可以使用 启动工作程序docker run IMAGENAME work或使用 启动服务器docker run IMAGENAME serve。
要在撰写文件中定义这两个服务,您需要覆盖command每个服务的字段。
version: '3'
services:
web:
build: ./docker # common Dockerfile
image: IMAGENAME
ports:
- "8090:8090"
command: ["serve"]
worker:
build: ./docker # common Dockerfile
image: IMAGENAME # reuse image
ports:
- "8091:8091"
command: ["work"]
Run Code Online (Sandbox Code Playgroud)
与具有两个独立映像的解决方案相比,该解决方案的优势在于可维护性的提高。由于只有一个 Dockerfile 和一个镜像,因此两种服务应该始终兼容。
| 归档时间: |
|
| 查看次数: |
4204 次 |
| 最近记录: |