docker run --init在docker-compose中的等效配置方式是什么?
在Docker Compose中启用Tini(对应
docker run --init参数) 嘿,这个问题我之前也碰到过,其实在Docker Compose里配置Tini超简单,有两种实用的方式,看你的场景选就行:
方法一:使用init配置字段(推荐)
从Docker Compose 3.7版本开始,官方提供了直接启用Tini的配置项——在服务的配置里添加init: true,这完全等价于在docker run命令中添加--init参数。
给你一个完整的示例配置:
version: '3.8' services: my-app: image: my-app-image:latest init: true # 这一行就是启用Tini的核心配置 ports: - "8080:8080" volumes: - ./data:/app/data
这个配置会让Docker自动为你的容器注入Tini作为PID 1进程,帮你处理僵尸进程、信号转发这些容器里常见的问题,省心又规范。
方法二:手动指定Tini作为入口点(适配旧版本Compose)
如果你的Docker Compose版本低于3.7,不支持init字段,那可以手动把Tini设置为容器的入口点。
现在大部分官方镜像(比如Alpine、Ubuntu的新版本)已经内置了Tini,直接这么配置就行:
version: '3' services: my-app: image: my-app-image:latest entrypoint: ["tini", "--"] command: ["npm", "start"] # 替换成你容器原本要执行的命令 # 其他配置项
如果你的镜像里没有内置Tini,可能需要先在Dockerfile中安装它,但现在官方Docker已经默认内置了,所以第一种方法是首选。
内容的提问来源于stack exchange,提问作者duggulous
相关产品推荐
相关产品推荐

