docker run コマンドを止めてDocker Composeを使用
ほとんどの docker run コマンドは、維持不能なフラグの混迷に陥ります。このガイドでは、docker run を docker compose に変換する方法を紹介し、フラグ参照表、実際の変換例、および無料の変換ツールを提供します。
Dockerのすべてのワークフローは同じように始まります。 docker run1つのフラグ、2つのフラグ——管理可能です。しかし、コンテナをポート、環境変数、ボリューム、再起動ポリシー、カスタムネットワークで実行するとき、そのコマンドは誰も覚えていない400文字のものになります。バージョン管理や、チームメンバーに渡すためにSlackのスレッドで恥ずかしさを共有する必要があります。
Docker Composeが解決です。1つのYAMLファイルで、すべてのコマンドを置き換えます——そしてGitにコミットします。
docker runがスケーリングを停止する理由
ここに典型的な docker run Node.jsアプリ用のコマンドがあります:
docker run -d \
--name my-app \
-p 3000:3000 \
-e NODE_ENV=production \
-e DATABASE_URL=postgres://user:pass@db:5432/mydb \
-v ./data:/app/data \
--network app-network \
--restart always \
my-app:latest
それは機能します。一度だけ。その後、ターミナルを閉じ、3週間後に新しいターミナルを開き、使ったフラグを思い出せません。共有できる情報はありません。 git diff。共有できる情報はありません。新入社員に説明できません。ステージングがプロダクションと一致しているか確認できません。
Docker Composeが提供するもの
Docker Composeは、その docker run コマンドに含まれるすべてをYAMLファイルに移します。そのファイルは docker-compose.yml。このファイルは:
- コードと同じ場所にリポジトリに存在します
- 1つのコマンドで実行されます
docker compose up -d - すべてのマシンと環境で同じように実行されます
- 複数サービスの設定(アプリ+データベース+キャッシュ)にも対応し、フラグ操作を避けます
docker runコマンドをDocker Composeに変換する方法
上記の同じコマンドはこのように変換されます docker-compose.yml:
version: "3.9"
services:
my-app:
image: my-app:latest
container_name: my-app
ports:
- "3000:3000"
environment:
NODE_ENV: production
DATABASE_URL: postgres://user:pass@db:5432/mydb
volumes:
- ./data:/app/data
networks:
- app-network
restart: always
networks:
app-network:
同じ動作です。しかし、今度は読みやすく、コミットされ、再現可能です。
開始する:
docker compose up -d
停止する:
docker compose down
docker runのフラグをdocker-compose.ymlのキーに変換
頻出するフラグの一覧です:
| docker run flag | docker-compose.yml key | 例 |
|---|---|---|
-p 8080:80 | ports: | - "8080:80" |
-e FOO=bar | environment: | FOO: bar |
-v ./data:/data | volumes: | - ./data:/data |
--network mynet | networks: | mynet |
--restart always | restart: | always |
--name mycontainer | container_name: | mycontainer |
--memory 512m | mem_limit: | 512m |
--cpus 1.5 | deploy.resources.limits.cpus | cpus: "1.5" |
-d | プレビューするには -d 実行時のフラグ | docker compose up -d |
自動的に変換
長い既存の docker run コマンド——特にREADMEやCIスクリプトから継承した、2年間触られていないもの——すべてのフラグを手動でマッピングする必要はありません。使用 Docker Run to Compose Converter: コマンドを貼り付け、有効な docker-compose.yml 出力が得られます。
ポート、環境変数、ボリューム、ネットワーク、再起動ポリシーなどすべてを処理します。古い1行コマンドを移行する際に、誤字を導入せずに役立ちます。
Composeファイルでリソース制限を設定している場合、 Dockerコンテナリソース計算機 は、ワークロードに基づいて適切なメモリとCPU値を選択できるように助けます——コミットする前に、空気から取り出した数字を確認する前に。
Dockerfileを同時にチェック
Composeファイルが整理されたら、その構築元となるDockerfileを確認します。未バインドのベースイメージ、欠落した WORKDIR、不要な RUN レイヤー——これらは簡単に見落とされ、後のデバッグが面倒です。これらの問題を Dockerfile Linter が、生産環境の問題になる前に検出します。
あなたも好きかもしれません
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
