Docker-Composeワンタッチ導入
4955 ワード
Docker-Composeワンタッチ導入
文書ディレクトリ
Dockerネットワークモード
dockerネットワークモードについては、時間があれば別のブログで詳しく紹介したり、そのブログの下で補足したりします.
dockerコンテナが存在するネットワークは特殊で、マルチコンテナのワンクリック配置ではネットワークの問題に特に注意する必要があります.
dockerには4つの独自のネットワークがあり、カスタムネットワークもサポートされています.
ワンタッチ配置
docker-compose.ymlは、ワンタッチの導入を実現します.
本プロジェクトの例を挙げると
version: "3"
services:
server:
image: gitgiter/baobaozhuan_server:latest
depends_on:
- db
- redis
deploy:
replicas: 1
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
ports:
- "8080:8080"
networks:
- webnet
db:
# image: mysql:5.7.25
image: gitgiter/baobaozhuan_db:latest
deploy:
replicas: 1
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 300M
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: SYSU_baobaozhuan2019
PMA_HOST: mysql
networks:
- webnet
nginx:
image: nginx:1.12.2
deploy:
replicas: 1
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
volumes:
- /etc/nginx:/etc/nginx
ports:
- "80:80"
- "443:443"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "9999:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
redis:
image: redis:5.0.2
ports:
- "6379:6379"
volumes:
- "/home/docker/data:/data"
deploy:
placement:
constraints: [node.role == manager]
command: redis-server --appendonly yes
networks:
- webnet
networks:
webnet:
version
docker-composeを指定します.ymlの構文バージョン.2と3はほとんど同じですが、2はコンテナカスタム静的ipをサポートし、3は動的ipをサポートするように変更されたようですが、serviceの名前で相手の動的ipを手に入れることができます.また2はdeployキーワードをサポートしていません.services
は、導入するサービスを指定します.次のレベルのキー値は、ここのserver、dbなどのサービス名です.サーバがdbにアクセスする場合は、http://db:3306アクセスすると、このdbはdbコンテナの動的ipに取って代わります.このようにする理由は、一般的にserverは1つの具体的なipを介してdbにアクセスするが、dockerネットワークモードにより1つのコンテナでlocalhostまたは127.0.0.1を使用するのは自分のいるコンテナにしかアクセスできず、別のコンテナにアクセスできないため、特定のコンデンサipを使用する必要がある、前述の172である.xxx.xxx.xxxですが、このipは動的に割り当てられており、プロファイル内のipは書き込みが死んでいることを示しています.つまり、このプロファイルに基づいて構築されたserverも、プロファイル内の書き込みが死んだipに基づいてアクセスすることしか知られていません.docker-compose upでサービスを開始するたびに、生成されるのは新しいコンテナであり、これらの新しいコンテナのipは変わります.このようにプロファイルにipをdbの先頭のurlと書くことで,実際のリクエスト時にserverは自分で対応する動的ipを手に入れてアクセスする.image
は、サービスベースのミラーを指定する.ports
ポートマッピング規則を指定します.volumes
マウントするファイルを指定します.ホストホストのファイルをコンテナにマウントできます.一般的にはプロファイルです.deploy
は、導入時のいくつかの特性を指定します.replicas
指定レプリカ数resource
は、cpu、メモリなどのrestart-policy
は、サービスが異常に停止した後に再起動することが一般的であるサービス再起動の条件を規定することができる.environment
コンテナの環境変数を指定します.network
ネットワークを構成します.デフォルトはbridgeモードで、ネットワークをカスタマイズすることもできます.depends-on
は、サービス依存を指定します.一部のサービスでは、サーバが正常に起動するには、dbとredisが先に起動しなければ、正常に起動できないなど、他のサービスが必要になる場合があります.さらに、
image
は、build
に置き換えられ、両者は同時に存在することができず、image
は、ローカルまたはリモートで構築された既存のミラーによって構築される.build
は、Dockerfileの位置を指定することによってdocker buildを模倣して新しいミラーを生成することができる.これで、万事そろって、ただ1つの借りがあります:
# docker-compose.yml
docker-compose up