docker runコマンドをdocker-compose.ymlに変換!その逆変換も可能な便利ツール

docker runコマンドをdocker-compose.ymlに変換する方法! Linux

Dockerを使ってコンテナ環境を構築する場合、docker runコマンドで実行していたコマンドをそのままdocker-compose.ymlファイルに設定したい場合があります。その逆に、docker-compose.ymlファイルに設定しているものを、そのままdocker runで実行したい場合もあります。どちらの場合でも、この記事で紹介する無料ツールを使うことによって、「docker runコマンドをdocker-compose.ymlに変換」、「docker-compose.ymlをdocker runコマンドに変換」という双方向の変換が可能となります。

Dockerイメージを配布しているサイトでは、docker runコマンドしか紹介されていない場合も多く、そのような場合にdocker-compose.ymlファイルをどう記述すればよいのか分からなかったりしますが、ここで紹介するツールを使うことで簡単に変換できます。

docker runコマンドをdocker-compose.ymlに変換

docker runコマンドをdocker-compose.ymlファイルに変換するには、「composerize」というツールを使うと便利です。

Composerize

https://www.composerize.com/」というサイトにアクセスします。すると次のような画面が表示されます。

画面上部には下記のようなdocker runコマンドの例が記載されています。

docker run -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always --log-opt max-size=1g nginx

このdocker runコマンドをdocker-compose.ymlファイルに変換した結果が、画面下部分に表示されています。

name: <your project name>
services:
    nginx:
        ports:
            - 80:80
        volumes:
            - /var/run/docker.sock:/tmp/docker.sock:ro
        restart: always
        logging:
            options:
                max-size: 1g
        image: nginx

変換したいdocker runコマンドをコピー&ペーストするだけで、このようにdocker-compose.ymlファイルの設定が瞬時に生成されます。この結果をコピーしてdocker-compose.ymlファイルに記載するだけです。

docker-compose.ymlをdocker runコマンドに変換

docker-compose.ymlファイルをdocker runコマンドに変換するには、「decomposerize」というツールを使うと便利です。

Decomposerize

https://www.decomposerize.com/」というサイトにアクセスします。すると次のような画面が表示されます。

画面上部には下記のようなdocker-compose.ymlファイルの例が記載されています。

version: '3.3'
services:
    nginx:
        ports:
            - '80:80'
        volumes:
            - '/var/run/docker.sock:/tmp/docker.sock:ro'
        restart: always
        logging:
            options:
                max-size: 1g
        image: nginx

このdocker-compose.ymlファイルをdocker runコマンドに変換した結果が、画面下部分に表示されています。

docker run -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always --log-opt max-size=1g nginx

変換したいdocker-compose.ymlファイルの設定をコピー&ペーストするだけで、このようにdocker runコマンドが瞬時に生成されます。この結果をコピーしてdocker runコマンドを実行できるようになります。

それぞれの変換ツールのコマンドライン版

composerize (docker runコマンドをdocker-compose.ymlに変換)ツールには、コマンドラインで実行できるものも用意されています。こちらを使うことも可能です。利用方法は下記GitHubに詳しく記載されています。

GitHub - composerize/composerize: 🏃→🎼 docker run asdlksjfksdf > docker-composerize up
🏃→🎼 docker run asdlksjfksdf > docker-composerize up - composerize/composerize

decomposerize (docker-compose.ymlをdocker runコマンドに変換)ツールにも、コマンドラインで実行できるものも用意されています。こちらを使うことも可能です。利用方法は下記GitHubに詳しく記載されています。

GitHub - composerize/decomposerize: Turn your Docker compose file to Docker run commands
Turn your Docker compose file to Docker run commands - composerize/decomposerize

まとめ

ここまで紹介したように、docker runコマンドからdocker-compose.ymlに変換、docker-compose.ymlをdocker runコマンドに変換するという、双方向の変換ツールを見てきました。実際に有名なApacheウェブサーバー(https://hub.docker.com/_/httpd)のDockerイメージファイルの紹介ページにはdocker-runコマンドしか記載されていません。しかしツールを使えば簡単にdocker runコマンドからdocker-compose.ymlファイルを生成することが出来ます。

ApacheウェブサーバーのDockerイメージを実行するためのdocker runコマンドは次のように紹介されています。

docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

composerizeツールを用いてdocker runコマンドを変換すると、次のようにdocker-compose.ymlファイルの内容を生成することが出来ます。

name: <your project name>
services:
    httpd:
        stdin_open: true
        tty: true
        container_name: my-apache-app
        ports:
            - 8080:80
        volumes:
            - '"$PWD":/usr/local/apache2/htdocs/'
        image: httpd:2.4

非常に簡単に変換できることが分かります。かなり時短が出来ますので是非活用して開発をスムーズに進められるようにしましょう。

タイトルとURLをコピーしました