Docker compose 備忘録


Docker とか詳しく分かってない人が Swagger UI を docker で立ち上げるまでの docker-compose 備忘録

Docker インストール

  1. Docker Hub の アカウント作成 & Docker desktop for mac をダウンロード

    Docker Hub

  2. Docker desktop をインストール & インストールチェック

$ docker version
Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:18:17 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.1
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.5
  Git commit:       74b1e89
  Built:            Thu Jul 25 21:17:52 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

launch

  1. swagger.yaml を作成
  2. docker-compose.yml を作成
  3. docker-compose.yml がある階層で docker-compose up -d
  4. http://localhost:3200 にアクセス
  5. Swagger UI がブラウザで見れる!!!!

今回作成した階層構造はこうなりました。

swagger/
  ├ swagger.yaml
  └ docker/
      └ docker-compose.yml

コンテナの起動

  • docker-compose up
    • コマンドを実行した階層の docker-compose.yml をもとにコンテナ起動

exit した場合はコンテナが終了するので docker-compose up -d でデタッチモード (バックグラウンド) で起動すると動き続ける。

  • docker-compose start
    • 停止中のコンテナ起動

コンテナの確認

  • docker-compose ps or docker container ls
$ docker-compose ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                            NAMES
c50f725ebe68        swaggerapi/swagger-ui   "sh /usr/share/nginx…"   25 hours ago        Up 9 hours          80/tcp, 0.0.0.0:3200->8080/tcp   docker_swagger_1

コンテナの停止・削除

  • docker-compose stop

    • コンテナ停止
  • docker-compose down

    • docker-compose で作成されたコンテナ関連削除
    • docker-compose down -v で volume ごと削除

Example

  • 今回使用した docker-compose.yml の例
docker-compose.yml
version: '3'

services:
  swagger:
    image: swaggerapi/swagger-ui
    environment:
      API_URL: /swagger.yaml
      BASE_URL: /
    volumes:
      - ../swagger.yaml:/usr/share/nginx/html/swagger.yaml
    restart: no
    ports:
      - 3200:8080

version

  • 起動する docker の version
    • 3 系が最新

services

  • Docker でアプリケーションを動かすための各要素
    • ls で確認したときの name になる
    • docker_swagger_1

image

  • 起動するコンテナのイメージ
    • ローカルになければリモートから pull ってくる

environment

  • 環境変数
    • image 内の環境変数を設定

volumes

  • マウントする設定ファイル/ディレクトリの指定
    • ホスト内のファイル/ディレクトリ : マウントするファイル/ディレクトリのコンテナ内のパス
volumes:
  - ./dir:/var/www/dir

ホスト上の dir 内でファイルを作るとコンテナの dir 内にも作られる。
(docker-compose.yml から見た相対パス)

一番上の例だと ../swagger.yaml を更新するとコンテナ内の /usr/share/nginx/html/swagger.yaml も更新される。

restart

  • 実行時に再起動するかどうか
option 挙動
no 再起動しない : デフォルト
always 再起動する
on-failure ?
unless-stopped ?

今回は特に気にしてなかったので詳しく調べていません

ports

  • コンテナの port 指定

参考

DockerをMacにインストールする(更新: 2019/7/13) - Qiita

Swagger 3.0のOAuth認証にCognito User PoolsのOAuth Clientを使う | DevelopersIO