この記事ではクラスタの展開に関連する内容は紹介しません バージョン制約
構造紹介
version # docker compose versionnetworks # docker の内部通信に使用されるネットワーク containerx-{name} # テンプレートの命名規則は再利用のために x- で始まりますvolumes # ボリュームをマウントservices # サービス モジュール。内部でコンテナー情報を定義します。その内部パラメーターは docker run のパラメーターと同じです。 モジュールの紹介 Docker Compose 公式ドキュメント バージョン
ネットワークモード
ネットワークモード: "ブリッジ" ネットワークモード: "ホスト" ネットワークモード: "なし" network_mode: "service:[サービス名]" network_mode: "container:[コンテナ名/ID]" ネットワーク 現在の 必ずしもバージョンと同じレベルに存在するわけではなく、サービスなどの他のモジュールにも存在する場合があります。 内部ネットワーク サービス: いくつかのサービス: ネットワーク: -あるネットワーク - その他のネットワーク パブリックネットワーク バージョン: "3" ネットワーク: デフォルトネットワーク: エイリアス(追加予定) ネットワークエイリアス バージョン: "3.8" サービス: ウェブ: 画像: "nginx:alpine" ネットワーク: - 新しい ワーカー: イメージ: "my-worker-image:latest" ネットワーク: - 遺産 デシベル: 画像: mysql ネットワーク: 新しい: エイリアス: - データベース 遺産: エイリアス: -MySQLについて ネットワーク: 新しい: 遺産: ipv4_address、ipv6_address(追加予定) バージョン: "3.8" サービス: アプリ: 画像: nginx:alpine ネットワーク: アプリネット: ipv4_アドレス: 172.16.238.10 ipv6_アドレス: 2001:3984:3989::10 ネットワーク: アプリネット: ipam: ドライバー: デフォルト 設定: - サブネット: "172.16.238.0/24" - サブネット: "2001:3984:3989::/64" サービス 最も重要な部分は各サービスを構成するために使用されます 建てる イメージをビルドするために使用されます。build フィールドと image フィールドの両方が存在する場合、image で指定されたイメージ名とタグが、ビルドされたイメージの名前とタグとして使用されます。 version: "3.8" # docker compose バージョン サービス: webapp: # docker-compose で定義されるサービス (コンテナ) 名は主に docker-compose コマンドのパラメータ用であり、docker が認識するコンテナ名と一致しない場合があります ps build: # Dockerfile を使用してイメージをビルドします context: ./dir コンテキスト パス、相対パスは compose ファイル パスを基準とします dockerfile: Dockerfile-alternate # Dockerfile ファイル名を指定します args: # Dockerfile 環境変数のパラメータを指定します buildno: 1 # ディレクトリとリストの両方の書き込みが許容されます コンテクスト 相対パスまたは Git リポジトリの URL を使用できます。 建てる: コンテキスト: ./dir Dockerファイル Dockerfileファイル名を指定し、コンテキストを指定する必要があります 建てる: コンテクスト: 。 dockerfile: Dockerfile 代替 引数 Dockerfileの ARGビルド番号 ARG gitcommithash RUN echo "ビルド番号: $buildno" # bash のようなスタイル RUN echo "コミットに基づく: $gitcommithash" リストまたはマップを使用して引数を設定できます 建てる: コンテクスト: 。 引数: # マップ ビルド番号: 1 gitcommithash:cdc3b19 さん 建てる: コンテクスト: 。 引数: # リスト -ビルド番号=1 -gitcommithash=cdc3b19 翻訳: ヒント キャッシュ元 ビルドプロセスのキャッシュを指定する 建てる: コンテクスト: 。 キャッシュ元: - アルパイン:最新 -corp/web_app:3.14 ラベル Dockerfileの 建てる: コンテクスト: 。 ラベル: # マップ com.example.description: 「会計 Web アプリ」 com.example.department: 「財務」 com.example.ラベルに空の値: "" 建てる: コンテクスト: 。 ラベル: # リスト - "com.example.description=会計ウェブアプリ" - "com.example.department=財務" - 「com.example.label-空の値」 ネットワーク
建てる: コンテクスト: 。 ネットワーク: ホスト # ホストモードでは、ネットワークの遅延が最も低く、パフォーマンスはホストマシンと一致します 建てる: コンテクスト: 。 network: custom_network_1 # カスタムネットワーク 建てる: コンテクスト: 。 ネットワーク: なし # ネットワークなし shm_サイズ コンテナ内の
建てる: コンテクスト: 。 shm_size: '2gb' # 文字列を使用してサイズを設定します 建てる: コンテクスト: 。 shm_size: 10000000 # バイトサイズを設定する 指示 Dockerfileの コマンド: bundle exec thin -p 3000 # シェルのような コマンド: ["bundle", "exec", "thin", "-p", "3000"] # json形式 コンテナ名
コンテナ名: my-web-container 依存する サービス間の依存関係を表現するために使用される
バージョン: "3.8" サービス: ウェブ: 建てる: 。 depends_on: # 最初に db と redis を起動します -db - レディス レディス: 画像: redis デシベル: 画像: postgres ヒント:
デバイス マウントされた外部デバイス デバイス: - "/dev/ttyUSB0:/dev/ttyUSB0" ドメイン名 カスタムDNSアドレス dns: 8.8.8.8 # 単一の文字列値 dns: # リスト - 8.8.8.8 - 9.9.9.9 dns_検索 DNS検索ドメイン名をカスタマイズする dns_search: example.com # 単一の文字列値 dns_検索: - dc1.example.com dc2.example.com の URL は http://www.dc2.example.com/ です。 エントリポイント デフォルトのエントリポイントを上書きする エントリポイント: /code/entrypoint.sh Dockerfileと同じ エントリポイント: ["php", "-d", "memory_limit=-1", "vendor/bin/phpunit"] ヒント: 環境ファイル 環境変数ファイルを env_file: .env # 単一の値 env_file: # リスト - ./common.env - ./apps/web.env - /opt/runtime_opts.env ヒント: # Rails/Rack環境を設定する # '#'はコメントです。 # 空行は無視されます RACK_ENV=development # 形式は VAR=VAL です .env ファイル内の環境変数は、ビルド プロセス中に明示的に読み取ることはできません。docker-compose.yaml ファイルによってのみ読み取られます。ビルド中に環境変数を使用する必要がある場合は、ビルド後に args サブパラメータを追加します。 複数の.envファイルを指定するには、公式サイトには非常に複雑なこの文章があります リスト内のファイルの順序は、複数回表示される変数に割り当てられる値を決定する上で重要であることに注意してください。 直訳すると リスト内のファイルの順序は、複数回出現する変数に割り当てられる値を決定する上で重要であることに注意してください。 環境パラメータ ファイルは上から下に処理されるため、複数のパラメータ ファイルに同じ環境変数が含まれている場合は、最後のパラメータ ファイルが優先されます。 環境 環境変数を追加する 環境: # マップ RACK_ENV: 開発 表示: 'true' セッションシークレット: 環境: # リスト - RACK_ENV=開発 - 表示=true -セッションシークレット ヒント: getEnvInfo()関数文字列{ rackEnv := os.Getenv("RACK_ENV") fmt.Println(ラック環境) } 出力: 発達 さらす ポートを公開しますが、サービス間の通信にのみ使用します。公開されるのは内部ポートであり、Dockerfileの さらす: - 「3000」 - 「8000」
外部リンク: - レディス1 - プロジェクトdb_1:mysql - プロジェクトdb_1:postgresql ヒント: 追加ホスト
追加ホスト: - "somehost:162.242.195.82" - 「その他のホスト:50.31.209.229」 コンテナ内の 162.242.195.82 誰かホスト 50.31.209.229 その他のホスト 健康チェック Dockerfileの ヘルスチェック: テスト: ["CMD", "curl", "-f", "http://localhost"] 間隔: 1分30秒 タイムアウト: 10秒 再試行: 3 開始期間: 40秒
ヘルスチェック: 無効: true 画像 プルまたは使用するイメージを指定します。 画像: redis #デフォルトラベル最新 イメージ: ubuntu:18.04 画像: tutum/influxdb イメージ: example-registry.com:4000/postgresql 画像: a4bc65fd 初期化 コンテナ内で init プログラムを実行し、プロセスを開始するための信号を転送します。 バージョン: "3.8" サービス: ウェブ: 画像: アルパイン:最新 初期化: 真 ヒント: 分離 コンテナ分離技術を指定します。Linuxは ラベル Dockerfileの 建てる: コンテクスト: 。 ラベル: # マップ com.example.description: 「会計 Web アプリ」 com.example.department: 「財務」 com.example.ラベルに空の値: "" 建てる: コンテクスト: 。 ラベル: # リスト - "com.example.description=会計ウェブアプリ" - "com.example.department=財務" - 「com.example.label-空の値」 リンク 古いバージョンの機能なので、推奨されません ログ記録 現在のサービスの毎日のパラメータを設定する ログ記録: ドライバー: syslog オプション: syslog アドレス: "tcp://192.168.0.42:123" ドライバー: "json-file" ドライバー: "syslog" ドライバー:「なし」 ヒント: ドライバー: "syslog" オプション: syslog アドレス: "tcp://192.168.0.42:123" デフォルトのログドライバーは オプション: max-size: "200k" # 単一ファイルの最大ストレージ max-file: "10" # ファイルの最大数 ヒント: サポートされているドライバーのリスト
ヒント: ポート 外部に露出したポート 短い構文: ポート: - 「3000」 - 「3000-3005」 - 「8000:8000」 - 「9090-9091:8080-8081」 - 「49100:22」 - 「127.0.0.1:8001:8001」 - 「127.0.0.1:5000-5010:5000-5010」 - 「6060:6060/udp」 - 「12400-12500:1240」 ヒント: 長い構文 長い構文では、短い構文では許可されないフィールドが許可されます
ポート: - 目標: 80 公開: 8080 プロトコル: tcp モード: ホスト 再起動 コンテナ再起動ポリシー restart: "no" # 失敗時に再起動しない restart: always # 失敗後に常に再起動する restart: on-failure # エラーコードが on-failure の場合にのみ再起動する restart: until-stopped # 手動停止後に再起動しない 秘密(追加予定) ボリューム データボリュームをマウントするために使用 短い構文
ホストへの相対パスを使用する場合は、 ボリューム: #コンテナ内のパスを指定すると、Docker は自動的にパスを作成します - /var/lib/mysql #マウント絶対パス - /opt/data:/var/lib/mysql # 相対パスをマウント - ./cache:/tmp/cache # ユーザーディレクトリの相対パス - ~/configs:/etc/configs/:ro # 名前付きマウント - datavolume:/var/lib/mysql 長い構文 長い構文を使用すると、短い構文では表現できないフィールドを使用できます。
バージョン: "3.8" サービス: ウェブ: 画像: nginx:alpine ポート: - 「80:80」 ボリューム: - タイプ: ボリューム 出典: マイデータ ターゲット: /data 音量: コピーなし: true - タイプ: バインド ソース: ./static ターゲット: /opt/app/static ネットワーク: ウェブネット: ボリューム: マイデータ: docker compose の記述ルールに関するこの記事はこれで終わりです。docker compose の記述ルールに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL データベースの最適化: インデックスの実装原則と使用状況の分析
>>: Springboot+Vue-Cropperでアバターの切り取りとアップロードの効果を実現
mysql5.7.21 zipの詳細なインストール手順は次のとおりです。 1. 解凍して指定されたデ...
前回の記事で、mysqldump バックアップ ファイルに記録されるタイムスタンプ データは UTC...
ステップ: 1. 仮想マシンディレクトリに新しいdocker-compose.ymlファイルを作成し...
まず、href 属性と onclick イベントの実行順序について説明します。マウスが a タグをク...
テーブルとは何ですか?テーブルは、データのキャリアである HTML テーブルです。以下は比較的標準的...
ユーザーテーブル、ID番号は一意である必要があります、携帯電話番号、電子メールアドレスは一意である必...
概要連合接続データセットキーワードは、2つのクエリ結果セットを1つに連結し、同一のレコードを除外する...
${param}によって渡されるパラメータは、テーブル名やフィールド名を渡すなど、SQL文の一部と...
画像の周囲にテキストを折り返すとは何ですか?これは次の図の効果です。 エフェクトのCSSコードはここ...
問題点: docker run に -v パラメータを追加すると、コンテナは常に再起動状態になります...
序文名前付きスロットは、スロット内の「name」属性を使用して要素にバインドされます。知らせ: 1....
冒頭にこう書かれています:アブソリュートは言った。「親戚よ、私はあなたを私の人生で見たくない!」なぜ...
HTML 構造は次のとおりです。 CCS 構造は次のとおりです。 ページ効果図は次のとおりです。 こ...
HTML のインライン要素とブロックレベル要素の違い:標準的なドキュメント フローでは、ブロック ...
クラスを見るとき、どのような情報を得たいですか?このクラスはどこで使用され、その機能は何ですか?この...