やったこと
これらのコマンドを使っていきます。
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’sDockerfile
or the contents of its build directory, you can rundocker-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