docker-compose.yml詳細
28540 ワード
デフォルトのテンプレートファイルはdocker-composeです.ymlは、定義された各サービスがimage命令によってミラーまたはbuild命令(Dockerfileが必要)を指定して自動的に構築される必要があります.
他のほとんどの命令はdocker runと似ています.
buildコマンドを使用すると、Dockerfileで設定オプション(例えば、CMD、EXPOSE、VOLUME、ENVなど)が自動的に取得され、docker-composeでは不要となる.ymlで再度設定します.
ミラー名またはミラーIDとして指定します.ミラーがローカルに存在しない場合、Composeはこのミラーを削除しようとします.
例:
Dockerfileが存在するフォルダのパスを指定します.Componentはこのミラーを自動的に構築し、このミラーを使用します.
コンテナの起動後にデフォルトで実行されるコマンドを上書きします.
他のサービスのコンテナにリンクします.サービス名(別名としても使用)またはサービス名:サービス別名(SERVICE:ALIAS)形式で使用できます.
使用する別名は、サービスコンテナの/etc/hostsに自動的に作成されます.例:
対応する環境変数も作成されます.
docker-composeにリンクします.yml外部のコンテナ、さらにはComponentが管理するコンテナではありません.パラメータフォーマットはlinksと似ています.
ポート情報を露出します.
ホスト:コンテナ(HOST:CONTAINER)形式またはコンテナのポートのみを指定します(ホストはポートをランダムに選択します).
注意:HOST:CONTAINERフォーマットを使用してポートをマッピングする場合、使用するコンテナポートが60未満の場合、YAMLはxx:yyという数値フォーマットが60進数であることを解析するため、エラーの結果を得る可能性があります.文字列フォーマットを推奨します.
ポートは露出しますが、ホストにマッピングされず、接続されたサービスのみがアクセスされます.
内部ポートのみをパラメータとして指定できます
ボリュームマウントパスの設定.ホストパス(HOST:CONTAINER)を設定するか、アクセスモード(HOST:CONTAINER:ro)を追加できます.
別のサービスまたはコンテナからすべてのボリュームをマウントします.
環境変数を設定します.配列や辞書の2つのフォーマットを使用できます.
指定した名前の変数だけが自動的に取得され、不要なデータの漏洩を防ぐことができます.
ファイルから環境変数を取得します.個別のファイルパスまたはリストです.
docker-compose-f FILEでテンプレートファイルを指定した場合env_fileのパスはテンプレートファイルのパスに基づいています.
変数名がenvironmentコマンドと競合している場合は、以降が準です.
環境変数ファイルの各行はフォーマットに合致し、#の先頭にあるコメント行をサポートする必要があります.
既存のサービスに基づいて拡張します.例えば、テンプレートファイルがcommonであるwebappサービスがあります.yml.
新しいdevelopmentを作成します.ymlファイル、commonを使用します.ymlのwebappサービスが拡張されます.
後者は自動的にcommonを継承します.ymlのwebappサービスおよび関連する一環変数.
ネットワークモードを設定します.docker clientの–netパラメータと同じ値を使用します.
ホストシステムとプロセスネーミングスペースを共有します.このオプションを開いたコンテナは、プロセスIDを介して相互にアクセスおよび操作することができる.
DNSサーバを構成します.値でもリストでも構いません.
コンテナのLinux機能(Capability)を追加または放棄します.
DNS検索ドメインを構成します.値でもリストでも構いません.
これらはdocker runがサポートするオプションと似ています.
他のほとんどの命令はdocker runと似ています.
buildコマンドを使用すると、Dockerfileで設定オプション(例えば、CMD、EXPOSE、VOLUME、ENVなど)が自動的に取得され、docker-composeでは不要となる.ymlで再度設定します.
image
ミラー名またはミラーIDとして指定します.ミラーがローカルに存在しない場合、Composeはこのミラーを削除しようとします.
例:
image: ubuntu
image: orchardup/postgresql
image: a4bc65fd
build
Dockerfileが存在するフォルダのパスを指定します.Componentはこのミラーを自動的に構築し、このミラーを使用します.
build: /path/to/build/dir
command
コンテナの起動後にデフォルトで実行されるコマンドを上書きします.
command: bundle exec thin -p 3000
links
他のサービスのコンテナにリンクします.サービス名(別名としても使用)またはサービス名:サービス別名(SERVICE:ALIAS)形式で使用できます.
links:
- db
- db:database
- redis
使用する別名は、サービスコンテナの/etc/hostsに自動的に作成されます.例:
172.17.2.186 db
172.17.2.186 database
172.17.2.187 redis
対応する環境変数も作成されます.
external_links
docker-composeにリンクします.yml外部のコンテナ、さらにはComponentが管理するコンテナではありません.パラメータフォーマットはlinksと似ています.
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
ports
ポート情報を露出します.
ホスト:コンテナ(HOST:CONTAINER)形式またはコンテナのポートのみを指定します(ホストはポートをランダムに選択します).
ports:
- "3000"
- "8000:8000"
- "49100:22"
- "127.0.0.1:8001:8001"
注意:HOST:CONTAINERフォーマットを使用してポートをマッピングする場合、使用するコンテナポートが60未満の場合、YAMLはxx:yyという数値フォーマットが60進数であることを解析するため、エラーの結果を得る可能性があります.文字列フォーマットを推奨します.
expose
ポートは露出しますが、ホストにマッピングされず、接続されたサービスのみがアクセスされます.
内部ポートのみをパラメータとして指定できます
expose:
- "3000"
- "8000"
volumes
ボリュームマウントパスの設定.ホストパス(HOST:CONTAINER)を設定するか、アクセスモード(HOST:CONTAINER:ro)を追加できます.
volumes:
- /var/lib/mysql
- cache/:/tmp/cache
- ~/configs:/etc/configs/:ro
volumes_from
別のサービスまたはコンテナからすべてのボリュームをマウントします.
volumes_from:
- service_name
- container_name
environment
環境変数を設定します.配列や辞書の2つのフォーマットを使用できます.
指定した名前の変数だけが自動的に取得され、不要なデータの漏洩を防ぐことができます.
environment:
RACK_ENV: development
SESSION_SECRET:
environment:
- RACK_ENV=development
- SESSION_SECRET
env_file
ファイルから環境変数を取得します.個別のファイルパスまたはリストです.
docker-compose-f FILEでテンプレートファイルを指定した場合env_fileのパスはテンプレートファイルのパスに基づいています.
変数名がenvironmentコマンドと競合している場合は、以降が準です.
env_file: .env
env_file:
- ./common.env
- ./apps/web.env
- /opt/secrets.env
環境変数ファイルの各行はフォーマットに合致し、#の先頭にあるコメント行をサポートする必要があります.
# common.env: Set Rails/Rack environment
RACK_ENV=development
extends
既存のサービスに基づいて拡張します.例えば、テンプレートファイルがcommonであるwebappサービスがあります.yml.
# common.yml
webapp:
build: ./webapp
environment:
- DEBUG=false
- SEND_EMAILS=false
新しいdevelopmentを作成します.ymlファイル、commonを使用します.ymlのwebappサービスが拡張されます.
# development.yml
web:
extends:
file: common.yml
service: webapp
ports:
- "8000:8000"
links:
- db
environment:
- DEBUG=true
db:
image: postgres
後者は自動的にcommonを継承します.ymlのwebappサービスおよび関連する一環変数.
net
ネットワークモードを設定します.docker clientの–netパラメータと同じ値を使用します.
net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"
pid
ホストシステムとプロセスネーミングスペースを共有します.このオプションを開いたコンテナは、プロセスIDを介して相互にアクセスおよび操作することができる.
pid: "host"
dns
DNSサーバを構成します.値でもリストでも構いません.
dns: 8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
cap_add, cap_drop
コンテナのLinux機能(Capability)を追加または放棄します.
cap_add:
- ALL
cap_drop:
- NET_ADMIN
- SYS_ADMIN
dns_search
DNS検索ドメインを構成します.値でもリストでも構いません.
dns_search: example.com
dns_search:
- domain1.example.com
- domain2.example.com
working_dir, entrypoint, user, hostname, domainname, mem_limit, privileged, restart, stdin_open, tty, cpu_shares
これらはdocker runがサポートするオプションと似ています.
cpu_shares: 73
working_dir: /code
entrypoint: /code/entrypoint.sh
user: postgresql
hostname: foo
domainname: foo.com
mem_limit: 1000000000
privileged: true
restart: always
stdin_open: true
tty: true