docker-compose build して、Dockerコンテナの起動までしてみる
Docker docker-compose
Published: 2020-12-13

やったこと

これらのコマンドを使っていきます。

  • docker-compose build
  • docker-compose up -d

確認環境

$ docker --version
Docker version 19.03.13, build 4484c46d9d
$ docker-compose --version
docker-compose version 1.27.4, build 40524192

調査

docker-compose build を実行する

docker-compose --help より

build Build or rebuild services

docker-compose build --help より

Build or rebuild services.

Services are built once and then tagged as project_service, e.g. composetest_db. If you change a service’s Dockerfile or the contents of its build directory, you can run docker-compose build to rebuild it.

Usage: build [options] [–build-arg key=val…] [–] [SERVICE…]

Dockerfile

FROM golang:latest

WORKDIR /go/src

ADD . /go/src

docker-compose.yml

version: '3' # composeファイルのバーション指定
services:
  app:
    build: .
    tty: true # コンテナの起動永続化
    volumes:
      - .:/go/src
    ports:
      - '9000:8080'

build 実行前

$ docker images | grep "app"
$ docker-compose images
Container   Repository   Tag   Image Id   Size
----------------------------------------------

ビルド実行

$ docker-compose build
Building app
Step 1/3 : FROM golang:latest
 ---> 8e2ffcb73e11
Step 2/3 : WORKDIR /go/src
 ---> Using cache
 ---> 7dbb384cb1ad
Step 3/3 : ADD . /go/src
 ---> b59a010ffd5b

Successfully built b59a010ffd5b
Successfully tagged golang_app:latest

ビルド実行後

$ docker-compose images
Container   Repository   Tag   Image Id   Size
----------------------------------------------
$ docker images | grep "app"
golang_app                           latest

Dockerイメージが作成されたことが分かります。(ちなみに、この挙動について公式ドキュメントが見つからなかった)

docker-compose up -d を実行する

$ docker-compose up -d
Creating network "golang_default" with the default driver
Creating golang_app_1 ... done

起動確認

$ docker ps | grep golang
45e0a8b4a6d2        golang_app            "bash"                   51 seconds ago      Up 48 seconds       0.0.0.0:9000->8080/tcp     golang_app_1
$ docker container ls | grep golang
45e0a8b4a6d2        golang_app            "bash"                   59 seconds ago      Up 56 seconds       0.0.0.0:9000->8080/tcp     golang_app_1
$ docker-compose ps
    Name       Command   State           Ports
-------------------------------------------------------
golang_app_1   bash      Up      0.0.0.0:9000->8080/tcp

起動していることが確認できました。

おまけ

コンテナに接続する

$ docker-compose exec app /bin/bash

参考