35

According to https://github.com/krallin/tini#using-tini, tini is built into docker, and can be used by passing the --init flag to docker run. In my case I'm using docker-compose and don't invoke docker run directly. How can I pass this flag?

duggulous
  • 2,161
  • 3
  • 19
  • 38

2 Answers2

27

If you are using version 2 of docker-compose, the configuration parameter is called init.

Example:

version: '2.2'
services:
  web:
    image: alpine:latest
    init: /usr/libexec/docker-init

Please see here for more details: https://docs.docker.com/compose/compose-file/compose-file-v2/#init

If you're using docker-compose version 3, apparently this has been removed and returned in version 3.7. Please refer to the following ticket: https://github.com/docker/docker.github.io/issues/3149

romash1408
  • 98
  • 3
whites11
  • 10,132
  • 3
  • 28
  • 43
  • 1
    Ah, ok. It was removed from version 3 but from that ticket it sounds like it is being worked on. At the moment, the takeaway is: "While the --init option is not yet supported for services, you can add the tini binary to your images (see the README for tini)." – duggulous May 15 '18 at 19:14
  • 10
    As of version 3.7, it's back. Just specify `init: true` for the appropriate service(s). (Requires Docker 18.06) – Steve Folly Aug 17 '20 at 10:51
14

Here is an example from Docker Docs:

version: "2.4"
services:
  web:
    image: alpine:latest
    init: true
David Buck
  • 3,594
  • 33
  • 29
  • 34
Felix Baron
  • 153
  • 1
  • 7