LoginSignup
2
2

More than 5 years have passed since last update.

What docker-compose is doing

Posted at

docker-compose up

docker-compose up does followings by the condition:

In case there's already the container

  • stop running container
  • create a new container as middle container
  • start middle container with volumes_from old container
    • The middle container's data is overwritten by old container
    • So it's stateful
  • wait middle container
  • remove old container
  • start another new container as final container with volumes_from middle container
  • remove middle container
Recreating dockerenvironment_web_1...
docker stop <- (u'04f067454c15a7e28302162ca6a8e9be35479a91b42ccc816dc08494d2d583d0')
docker stop -> None
docker create_container <- (entrypoint=[u'/bin/echo'], image=u'myapp_web:latest', detach=True, command=[])
docker create_container -> {u'Id': u'5d34728f3104dd30ece803928de8ab52e72213150f514fe4db87062eab891191',
 u'Warnings': None}
docker inspect_container <- (u'5d34728f3104dd30ece803928de8ab52e72213150f514fe4db87062eab891191')
docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [],
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [],
             u'CpuShares': 0,
             u'Cpuset': u'',
             u'Domainname': u'',
             u'Entrypoint': [u'/bin/echo'],
...
docker start <- (u'5d34728f3104dd30ece803928de8ab52e72213150f514fe4db87062eab891191', volumes_from=u'04f067454c15a7e28302162ca6a8e9be35479a91b42ccc816dc08494d2d583d0')
docker start -> None
docker wait <- (u'5d34728f3104dd30ece803928de8ab52e72213150f514fe4db87062eab891191')
docker wait -> 0
docker remove_container <- (u'04f067454c15a7e28302162ca6a8e9be35479a91b42ccc816dc08494d2d583d0')
docker remove_container -> None
docker containers <- (all=True)
docker containers -> (list with 99 items)
docker create_container <- (environment={'RAILS_ENV': 'staging', 'TMPDIR': '/tmp'}, image=u'myapp_web:latest', detach=False, ports=[u'80'], name=u'dockerenvironment_web_1')
docker create_container -> {u'Id': u'a851722e1a60ee857c660253e3f7ca2c70fa023442fb1c3ebc38686fcf86fca7',
 u'Warnings': None}
docker inspect_container <- (u'a851722e1a60ee857c660253e3f7ca2c70fa023442fb1c3ebc38686fcf86fca7')
docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [],
 u'Config': {u'AttachStderr': True,
             u'AttachStdin': False,
             u'AttachStdout': True,
             u'Cmd': [u'./start.sh'],
             u'CpuShares': 0,
             u'Cpuset': u'',
             u'Domainname': u'',
             u'Entrypoint': None,
...
docker containers <- (all=False)
docker containers -> (list with 3 items)
docker containers <- (all=False)
docker containers -> (list with 3 items)
docker containers <- (all=True)
docker containers -> (list with 100 items)
docker start <- (u'a851722e1a60ee857c660253e3f7ca2c70fa023442fb1c3ebc38686fcf86fca7', links=[(u'dockerenvironment_redis_1', 'redis'), (u'dockerenvironment_redis_1', u'dockerenvironment_redis_1'), (u'dockerenvironment_redis_1', u'redis_1'), (u'dockerenvironment_postgres_1', 'postgres'), (u'dockerenvironment_postgres_1', u'dockerenvironment_postgres_1'), (u'dockerenvironment_postgres_1', u'postgres_1')], cap_add=None, restart_policy=None, dns_search=None, network_mode=u'bridge', binds={}, dns=None, volumes_from=[u'c90dd2633d4fc9c25804147f0bb9a3adf60bed37f14347158531c28e2beccd7a', u'5d34728f3104dd30ece803928de8ab52e72213150f514fe4db87062eab891191'], port_bindings={u'80': [u'80']}, cap_drop=None, privileged=False)
docker start -> None
docker remove_container <- (u'5d34728f3104dd30ece803928de8ab52e72213150f514fe4db87062eab891191')
docker remove_container -> None
docker containers <- (all=True)
docker containers -> (list with 99 items)

In case there isn't the container yet

  • create container
  • start container
Creating dockerenvironment_myapp_1...
docker containers <- (all=True)
docker containers -> (list with 99 items)
docker create_container <- (name=u'dockerenvironment_myapp_1', image=u'myappservice_web:latest', environment={'RACK_ENV': 'staging'}, volumes={u'/usr/src/app/myapp-service/db': {}}, detach=False, ports=[u'9292'])
docker create_container -> {u'Id': u'd831bf11447dacaf291dd57e5cf72964d41403325cb080546186c36e2d1106df',
 u'Warnings': None}
docker inspect_container <- (u'd831bf11447dacaf291dd57e5cf72964d41403325cb080546186c36e2d1106df')
docker inspect_container -> {u'AppArmorProfile': u'',
 u'Args': [],
 u'Config': {u'AttachStderr': True,
             u'AttachStdin': False,
             u'AttachStdout': True,
             u'Cmd': [u'./start.sh'],
             u'CpuShares': 0,
             u'Cpuset': u'',
             u'Domainname': u'',
             u'Entrypoint': None,
...
docker containers <- (all=False)
docker containers -> (list with 4 items)
docker containers <- (all=False)
docker containers -> (list with 4 items)
docker containers <- (all=True)
docker containers -> (list with 100 items)
docker start <- (u'd831bf11447dacaf291dd57e5cf72964d41403325cb080546186c36e2d1106df', links=[(u'dockerenvironment_redis_1', 'redis'), (u'dockerenvironment_redis_1', u'dockerenvironment_redis_1'), (u'dockerenvironment_redis_1', u'redis_1'), (u'dockerenvironment_postgres_1', 'postgres'), (u'dockerenvironment_postgres_1', u'dockerenvironment_postgres_1'), (u'dockerenvironment_postgres_1', u'postgres_1')], cap_add=None, restart_policy=None, dns_search=None, network_mode=u'bridge', binds={}, dns=None, volumes_from=[u'c90dd2633d4fc9c25804147f0bb9a3adf60bed37f14347158531c28e2beccd7a'], port_bindings={u'9292': [u'9292']}, cap_drop=None, privileged=False)
docker start -> None
docker containers <- (all=True)
docker containers -> (list with 100 items)
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2