きなこもち.net

.NET Framework × UiPath,Orchestrator × Azure × AWS × Angularなどの忘備録

docker-compose × yml × すぐ使える簡単なテンプレートを作ってみた

この記事の目的

この記事は、
ちょっとしたとき、すぐ使えるdocker-compose.ymlのひな型のメモ
を目的としています。

要約

ちょっとdockerコンテナを試したい。
1つのコンテナ(postgresとかGitlabとか)を立てて使いたい。

といったときに、パパっと使うためのdocker-composeのひな型を考えてみました。

本題

★ひな型

version: "3.7"
services:
  container_name: #任意の名前を付ける。
    image: postgres:11

    #env_file: #環境変数の設定が必要な場合は、このファイルを作って、そこに記述する
      #- environment.env

    deploy:
      resources: #リソースの制限
        limits: #CPU,メモリの上限設定
          cpus: '0.50'
          memory: 50M
        reservations: #CPU,メモリの上限設定
          cpus: '0.25'
          memory: 25M

    logging:
      #大量にログをはくコンテナだと、平気で30Gとか使ってくるから許容できる範囲を計算する
      driver: json-file #json-file(default),syslog,none
      options:
        max-file: "10"
        max-size: "200k"
    volumes: #docker for windows環境では、マウント対象の権限に注意が必要
      - postgres-db:/var/lib/postgresql/data

    networks:
      postgres-nw:

    ports:
      - 5432:5432 #host:container

###
volumes:
  postgres-db: #Volumeの名前を設定する
    #docker-composeで管理しているVolumeを利用する→false
    #そうでない(Dockerコマンドで別作成したVolumeを利用する)→true
    #注意:falseの場合、docker-compose downしたときに、コンテナと一緒に削除される
    external: false
    #あらかじめ作る場合:docker volume create <volume name>

###
networks:
  postgres-nw: #ネットワークの名前を指定
    external: false
    #あらかじめ作る場合:docker network create <network name>

★依存関係を持つコンテナの起動確認をする

depends_onだけでは、順序を保証してコンテナを起動させることはできないため、
以下のようなスクリプトを使って対応するらしいです。
docs.docker.com

#!/bin/bash

status_code=0
i=1
while [ $status_code -ne 200 ]
do
    sleep 2s
    status_code=`curl  http://elasticsearch:9200 -iLs -o /dec/null  -w '%{http_code}\n'`
done