広告が嫌いですか? 行く 広告なし 今日

docker run コマンドを止めてDocker Composeを使用

掲載日

ほとんどの docker run コマンドは、維持不能なフラグの混迷に陥ります。このガイドでは、docker run を docker compose に変換する方法を紹介し、フラグ参照表、実際の変換例、および無料の変換ツールを提供します。

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 flagdocker-compose.yml key
-p 8080:80ports:- "8080:80"
-e FOO=barenvironment:FOO: bar
-v ./data:/datavolumes:- ./data:/data
--network mynetnetworks:mynet
--restart alwaysrestart:always
--name mycontainercontainer_name:mycontainer
--memory 512mmem_limit:512m
--cpus 1.5deploy.resources.limits.cpuscpus: "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 が、生産環境の問題になる前に検出します。

広告なしで楽しみたいですか? 今すぐ広告なしで

拡張機能をインストールする

お気に入りのブラウザにIOツールを追加して、すぐにアクセスし、検索を高速化します。

に追加 Chrome拡張機能 に追加 エッジ拡張 に追加 Firefox 拡張機能 に追加 Opera 拡張機能

スコアボードが到着しました!

スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!

ニュースコーナー 技術ハイライト付き

参加する

価値ある無料ツールの提供を継続するためにご協力ください

コーヒーを買って