- 各スタックは、compose.yamlファイル、変数、ネットワーク、ボリュームをそれぞれ1つのフォルダ内に保持します。
- これらのサービスはネットワークを共有しており、内部名を使用して識別されます。
- ボリュームは、コンテナが再作成または更新された場合でもデータを保持します。
- ヘルスチェックは、データベースからの応答がある前にアプリケーションが起動するのを防ぎます。
Dockge がインストールされると、そのダッシュボードを使用して、ターミナルでコマンドを何度も入力することなく、1 つ以上のコンテナで構成されるアプリケーションをデプロイできます。各アプリケーションは、 Docker Composeスタックサービス、変数、ネットワーク、ボリュームが単一のプロジェクトに統合されています。
これは、アプリケーションが複数のコンポーネントを連携させて動作させる必要がある場合に特に便利です。たとえば、Giteaのようなサービスでは、アプリケーション用に1つのコンテナ、PostgreSQL用に別のコンテナが必要になる場合があります。Dockgeを使用すると、単一のインターフェースから構成の編集、アセンブリの起動、ログの確認、イメージの更新を行うことができます。
このガイドは、DockerとDockgeが既に起動して動作していることを前提としています。ダッシュボードをまだ設定していない場合は、まず... Docker Composeを使用してDockerをインストールする そして、スタックフォルダを適切に設定してください。
ドッケ氏はスタックをどのように定義しているのか?

Dockgeでは、スタックは基本的に Docker Composeプロジェクト通常はファイルを含むフォルダで構成されます。 compose.yaml そして、オプションでファイル .envボリュームとして使用される追加の構成、証明書、またはディレクトリ。
デフォルト設定では、Dockge はプロジェクトを次の構造で保存します。
/opt/stacks/
├── gitea/
│ ├── compose.yaml
│ └── .env
├── stirling-pdf/
│ └── compose.yaml
└── vaultwarden/
├── compose.yaml
└── .env
各サブフォルダーは独立したスタックを表します。このファイルベースの構造により、Dockge から、または次のような従来のコマンドを使用して同じプロジェクトを管理できます。 docker compose up, docker compose down y docker compose logs.
この概念は、Docker Swarmスタックと混同してはいけません。DockgeはDocker Composeを使用し、 これはサーバーをクラスタ化するものではありません。マネージャーノードやワーカーノード、ルーティングメッシュ、グローバルサービス、コマンドなどの要素 docker stack deploy 彼らはSwarmに所属しており、この手続きには関与していません。
Dockgeはエージェントを使用して異なるホストに接続できますが、各スタックは対応するホスト上でComposeプロジェクトとして実行され続けます。
スタックを作成する前に必要なもの
アプリケーションをデプロイする前に、Compose ファイルに必要なデータを収集しておくことをお勧めします。
- La 公式画像 各サービスと、使用したいラベル。
- 利用可能なホストポート。
- データが保存されるフォルダまたはボリューム。
- アプリケーションに必要な環境変数。
- データベースの認証情報およびその他の内部サービス。
- マウントされたディレクトリにアクセスするために必要な権限。
また、どのサービスを外部に公開する必要があるかを決定する必要もあります。例えば、スタック内の他のアプリケーション1つだけが使用するデータベースなどです。 ポートを公開する必要はありません。 ホスト上で動作します。コンテナは、Composeによって作成された内部ネットワークを介して直接通信できます。
より複雑なプロジェクトを作成する前に、単一サービスアプリケーションで練習するには、 Dockerを使用してStirling PDFをインストールする そして後でドックから管理する。
Dockgeで新しいスタックを作成する方法

ドックパネルにアクセスしてコントロールを押して 新しいスタックを作成する短く覚えやすい名前を入力してください。できれば小文字、数字、ハイフンのみで構成し、スペースや特殊文字は使用しないでください。
例えば:
gitea
Dockge は、スタック用に設定されたディレクトリ内にプロジェクト用のフォルダを作成します。メインエディタでは、以下の内容を入力または貼り付けることができます。 compose.yaml.
以下の例では、PostgreSQLデータベースとともにGiteaサーバーを作成します。
services:
db:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 10s
timeout: 5s
retries: 5
gitea:
image: docker.gitea.com/gitea:1-rootless
restart: unless-stopped
environment:
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: db:5432
GITEA__database__NAME: ${POSTGRES_DB}
GITEA__database__USER: ${POSTGRES_USER}
GITEA__database__PASSWD: ${POSTGRES_PASSWORD}
ports:
- "${GITEA_HTTP_PORT:-3000}:3000"
- "${GITEA_SSH_PORT:-2222}:2222"
volumes:
- gitea_data:/var/lib/gitea
- gitea_config:/etc/gitea
depends_on:
db:
condition: service_healthy
volumes:
db_data:
gitea_data:
gitea_config:
Docker Composeの最新バージョンは 仕様書の作成したがって、次のようなプロパティでファイルを開始する必要はなくなりました。 version: "3"Composeは、認識した最新のスキームを自動的に使用します。
環境変数の設定方法
前の例では、次のような参照を使用しています。 ${POSTGRES_PASSWORD}これらの値はファイル内で定義する必要があります。 .env 同じスタックフォルダ内にあります。
Giteaを例にとると、内容は以下のようになるでしょう。
POSTGRES_DB=gitea
POSTGRES_USER=gitea
POSTGRES_PASSWORD=CAMBIA_ESTA_CONTRASENA
GITEA_HTTP_PORT=3000
GITEA_SSH_PORT=2222
サンプルパスワードを長くてランダムなパスワードに置き換えてください。 .env Composeの再利用を容易にするが、 機密情報は暗号化しません。そのファイルのアクセス権限を制限し、Gitリポジトリから除外し、スクリーンショットやプロジェクトの公開コピーと一緒に共有することは避けるべきです。
より高度な環境向けに、Docker Composeはコンテナ内にファイルとしてマウントされたシークレットをサポートしています。PostgreSQLとGiteaはどちらもファイルからパスワードを読み取ることができるため、パスワードがサービス変数に直接表示されるのを防ぐことができます。
Dockgeはコンテナを管理するためにDockerソケットにアクセスできます。そのため、ダッシュボードへのアクセス権限は信頼できる管理者のみに限定してください。また、出所不明のCompose設定ファイルを貼り付けることは避けてください。機密性の高いフォルダがホスト上にマウントされたり、管理者権限の昇格を要求されたりする可能性があるためです。
ネットワークとサービス名の仕組み

Docker Compose は自動的に 各プロジェクトのデフォルトネットワークそれに接続されているすべてのサービスは、使用されている名前を使用して見つけることができます。 compose.yaml.
この例では、Gitea は次のようにして PostgreSQL に接続します。
db:5432
db これはサービス名であり、固定IPアドレスではありません。コンテナが再作成されて異なるアドレスが割り当てられた場合でも、Dockerはこの内部的な名前解決を維持します。
使用しないでください localhost 2 つのコンテナを接続する。Gitea コンテナ内部では、 localhost これはPostgreSQLコンテナではなく、Gitea自体を指しています。
Giteaだけが接続する必要がある場合は、データベースポート5432を公開する必要もありません。 portsサーバーの攻撃対象領域を縮小します。
スタックデータを保持する方法
コンテナは交換可能です。内部ファイルシステム内にのみ情報を保存している場合、コンテナを再作成する際に情報が失われる可能性があります。これを回避するため、この例では3つのコンテナを宣言しています。 持続的なボリューム:
db_dataPostgreSQLデータベースを保持しています。gitea_dataGiteaのリポジトリとデータを保存します。gitea_configアプリケーションの設定を保持します。
スタックを停止または再作成しても、これらのボリュームは自動的に削除されません。ただし、同じサーバー上に引き続き存在するため、 これらはバックアップを置き換えるものではありません.
バインドマウントを使用して、ホスト上の特定のパスにファイルを保存することもできます。その場合は、フォルダが存在すること、およびコンテナを実行しているユーザーがそれらのフォルダへの読み取りまたは書き込みに必要な十分な権限を持っていることを確認してください。
healthchecksとdepends_onを使用する理由
物件 depends_on これはComposeがサービスを作成する順序を定めるものですが、コンテナを起動したからといって、そのコンテナ内でホストされるアプリケーションが準備完了になったとは限りません。
PostgreSQLのデータベース初期化には数秒かかる場合があります。Giteaが早すぎるタイミングで接続を試みると、両方のコンテナが稼働していてもエラーが表示されることがあります。
El healthcheck この例は定期的に実行されます pg_isready状態 service_healthy これにより、Compose は Gitea を起動する前に PostgreSQL が正常に応答するまで待機します。この組み合わせは、次のようなスタックで特に役立ちます。 データベース、キュー、またはストレージサービス.
スタックの開始方法と確認方法
Composeファイルと変数の設定が完了したら、変更を保存してDockgeからスタックを起動します。ダッシュボードには、イメージのダウンロード、ボリュームの作成、コンテナの起動状況がリアルタイムで表示されます。
PostgreSQLが正常に動作しており、Giteaが引き続き実行されていることを確認してください。次に、以下を開きます。
http://IP_DEL_SERVIDOR:3000
ターミナルからプロジェクトを確認することもできます。
cd /opt/stacks/gitea
docker compose config
docker compose ps
docker compose logs --tail=100
docker compose config これは、変数を解決した後の最終的な構成を表示します。これは、サービスを開始する前に構文エラー、空の値、または予期しない置換を特定するのに特に役立ちます。
画像を更新する必要がある場合は、 Dockerを使用してDockerコンテナを更新する大規模なアップグレードを行う前に、ボリュームのバックアップを取り、バージョン変更点を確認してください。
既存のスタックをDockgeにインポートする方法
Dockgeは、ターミナルから以前に作成したComposeプロジェクトを管理することもできます。推奨される手順は次のとおりです。
- 重複を避けるため、既存のプロジェクトを停止してください。
- stacksディレクトリ内にサブフォルダを作成します。
- ファイルをその名前でそこに移動します
compose.yaml. - ファイルもコピーしてください
.envそして補助ファイル。 - オプションを使用する スキャンスタックフォルダ ドックゲより。
- プロジェクトを再開する前に、設定を確認してください。
例えば:
/opt/stacks/mi-aplicacion/compose.yaml
別のフォルダーを設定した場合 /opt/stacksDockgeコンテナ内に設定されたルートは、 ホストの絶対パスと同一異なる経路を使用すると、相対バインドマウントが誤った場所を指す可能性があります。
Dockgeでスタックを作成する際によくある間違い

YAMLファイルが無効です
YAMLはインデントに依存しており、スペースの代わりにタブを使用することはできません。特にセクション分けに注意してください。 services, volumes y environment。 走る docker compose config 問題のある回線を特定する。
「ポートは既に割り当てられています」というエラーが表示されます
別のコンテナまたはサービスが同じホストポートを使用しています。マッピングの左側の値のみを変更してください。たとえば、 3000:3000 による 3001:3000.
変数が空になっているようです。
ファイル名が正確に一致していることを確認してください .envそれがスタックフォルダ内にあり、名前が使用されているものと一致すること compose.yaml結果を確認する docker compose config 機密情報が含まれている場合は、その出力を共有しない。
アプリケーションがデータベースを見つけられません
サービス名をホスト名として使用します。例では、次のように使用します。 db、 いいえ localhost 手動で割り当てられたIPアドレスも使用しないでください。また、両方のサービスが同じネットワークを共有していることを確認してください。
アプリケーションはPostgreSQLより先に起動します
depends_on 健康チェックがない場合、作成順序のみを制御します。 healthcheck データベースにアクセスし、条件を使用します service_healthy.
フォルダをマウントしようとすると、「アクセスが拒否されました」というメッセージが表示されます。
ホスト上にパスが存在すること、適切な場合は絶対パスであること、そしてコンテナの内部ユーザーがアクセスできる権限が設定されていることを確認してください。恒久的な解決策として、グローバルな書き込み権限を付与しないでください。
スタックはドックに表示されません
ファイルが次のような構造に直接配置されていることを確認してください。 /opt/stacks/nombre/compose.yaml次に実行します スキャンスタックフォルダ設定済みのフォルダ外に保存されたプロジェクトは自動的に表示されません。
コンテナが繰り返し再起動状態になる
Dockge からログを開くか、実行してください docker compose logs最も一般的な原因は、認証情報の誤り、必要な変数の欠落、権限不足、またはまだ利用できない依存関係です。
Dockerスタックを作成するには、Docker Composeを使用してアプリケーションを定義し、その変数と永続データを保存し、ビジュアルインターフェースからデプロイする必要があります。重要なのは、内部通信にサービス名を使用し、必要なポートのみを公開し、ヘルスチェックを使用して依存関係の可用性を確認することです。
Dockgeは管理を簡素化しますが、プロジェクトは標準的なComposeファイルのままです。これにより、構成の制御を維持し、必要に応じてコマンドラインを使用し、独自のデータベースに依存することなくスタックを別のサーバーに移行できます。
私はテクノロジー愛好家であり、その「オタク」の興味を職業に変えています。私は 10 年以上、純粋な好奇心から最先端のテクノロジーを使用し、あらゆる種類のプログラムをいじくり回してきました。現在はコンピューター技術とビデオゲームを専門にしています。これは、私が 5 年以上、テクノロジーやビデオ ゲームに関するさまざまな Web サイトに執筆し、誰にでも理解できる言語で必要な情報を提供することを目的とした記事を作成しているためです。
ご質問がございましたら、私の知識は Windows オペレーティング システムから携帯電話用の Android に関連するあらゆるものまで多岐にわたります。そして、私はあなたに対して、いつでも喜んで数分を費やして、このインターネットの世界であなたが抱いている疑問を解決するお手伝いをしたいと考えています。