Takeout は、開発環境の依存関係ごとに 1 つずつ、小さな Docker コンテナーを起動するための CLI ツールです。
Laravel Valet のようなツールと組み合わせることが意図されています。現在、macOS、Linux、Windows 10、WSL2 と互換性があります。
takeout enable mysql
使用すると、MySQL を実行できるようになり、Homebrew MySQL の管理や修正について心配する必要がなくなります。
ただし、簡単なコマンドを使用して、ElasticSearch、PostgreSQL、MSSQL、Mongo、Redis などを簡単に有効にすることもできます。サービスの現在のリストについては、このディレクトリで利用可能なクラスを確認してください: https://github.com/tighten/takeout/tree/main/app/Services
次のコマンドを実行して、Composer を使用して Takeout をインストールします。
composer global require " tightenco/takeout:~2.8 "
~/.composer/vendor/bin
ディレクトリがシステムの「PATH」にあることを確認してください。
takeout
実行してから、ターミナルの任意の場所からコマンド名を実行します。
Takeout の主な利点の 1 つは、さまざまな依存関係の Docker コンテナを迅速かつ簡単に起動 (「有効」) または削除 (「無効」) できることです。
Docker は永続ボリューム ストレージを提供するため、コンテナーを削除しても (コンテナーを「無効にする」と呼びます)、実際にはそのデータは削除されません。つまり、無謀にサービスを有効にしたり無効にしたりできるということです。
有効にできるすべてのサービスのリストを表示します。
takeout enable
1 つ以上のサービスの短縮名が渡されたので、それらを有効にします。
takeout enable mysql
takeout enable redis meilisearch
各パラメータの入力を求められるのをスキップして、デフォルト値をそのまま受け入れたい場合。これは、1 つのコマンドで複数のサービスでも機能します。
takeout enable mysql --default
takeout enable redis meilisearch --default
--
区切り文字の後にコンテナに追加の引数を指定できます。
takeout enable mysql -- -hsome.mysql.host -usome-user
これらはコンテナのエントリポイントの引数であり、追加の docker run オプションではないことに注意してください (以下を参照)。
docker run
オプション内部では、 takeout enable
コマンドによってdocker run
コマンドが生成されます。場合によっては、追加の環境変数や追加のボリューム マッピングなど、 docker run
コマンドに追加のオプションを指定したい場合があります。 --run=
オプションを使用して、すべての追加のdocker run
オプションを含む文字列を渡すことができます。
takeout enable mysql --run= " {docker-run-options} "
これにより、次のコマンドが生成されます。
docker run {docker-run-options} {service-options} mysql/mysql-server
ここで、 {docker-run-options}
--run
オプション内で指定するオプションで、 {service-options}
はそのサービスのデフォルト オプションに基づいて生成されます。
docker run
オプションとコンテナ引数の混合run
オプションとコンテナ引数を組み合わせて使用できます。
takeout enable mysql --run= " {docker-run-options} " -- -hsome.mysql.host -usome-user
無効にできるすべての有効なサービスのリストを表示します。
takeout disable
1 つ以上のサービスの短縮名が渡され、それらに最もよく一致する有効なサービスを無効にします。
takeout disable mysql
takeout disable redis meilisearch
takeout disable --all
起動できるすべての停止済みコンテナのリストを表示します。
takeout start
1 つ以上の停止したコンテナのコンテナ ID が渡された場合、それらに一致する停止したコンテナを起動します。
takeout start {container_id}
takeout start {container_id1} {container_id2}
-all
フラグを渡すと、有効なコンテナをすべて起動できます。
takeout start --all
停止できる実行中のすべてのコンテナのリストを表示します。
takeout stop
1 つ以上の実行中のコンテナーのコンテナー ID が渡された場合、それらに一致する実行中のコンテナーを停止します。
takeout stop {container_id}
takeout stop {container_id1} {container_id2}
Takeout のもう 1 つの利点は、依存関係の複数のバージョンを同時にインストールして実行できることです。これは、たとえば、MySQL 5.7 と 8.0 の両方を異なるポートで同時に実行できることを意味します。
takeout enable mysql
2 回実行します。初回はデフォルトのポート ( 3306
) と最初のバージョン ( 5.7
) を選択し、2 回目は 2 番目のポート ( 3307
)、2 番目のバージョン ( 8.0
) と異なるボリューム名 (同じmysql_data
共有しないように)。
ここで、 takeout list
実行すると、両方のサービスが同時に実行されていることがわかります。
+--------------+----------------+---------------+-----------------------------------+
| CONTAINER ID | NAMES | STATUS | PORTS |
+--------------+----------------+---------------+-----------------------------------+
| 4bf3379ab2f5 | TO--mysql--5.7 | Up 2 seconds | 33060/tcp, 0.0.0.0:3306- > 3306/tcp |
| 983acf46ceef | TO--mysql--8.0 | Up 35 seconds | 33060/tcp, 0.0.0.0:3307- > 3306/tcp |
+--------------+----------------+---------------+-----------------------------------+
Takeout コンテナーは、 takeout
という名前の Docker ネットワークに自動的に追加されます。これにより、他のコンテナに使用されているものと同じエイリアスとベース エイリアスを使用できるようになります。
このネットワーク上では、各コンテナに 2 つのエイリアスが与えられます。
Takeout ネットワーク上の他のコンテナは、エイリアスによって Takeout コンテナにアクセスできます。セイルとテイクアウトの併用方法はこちらの記事をチェック
残念ながら、そうではありません。
まず、 lsof -i :3306
を実行します (3306 は使用できないポートです)。
次のような出力が表示された場合:
com.docke 936 mattstauffer 52u IPv6 0xc0d6f0b06d5c4efb 0t0 TCP localhost:mysql->localhost:62919 (FIN_WAIT_2)
TablePlus 96155 mattstauffer 16u IPv4 0xc0d6f0b0b6dccf6b 0t0 TCP localhost:62919->localhost:mysql (CLOSE_WAIT)
解決策は、データベース GUI を閉じてから解放することです。
docker-compose
使用すると、プロジェクトごとに依存関係が設定されます。これは完全に適切な方法です。グローバル環境全体に対して各依存関係のコピーを 1 つずつ用意する方が合理的である場合は、Takeout の方が合理的です。
いいえ!データは残ります。デフォルトでは、当社のほぼすべてのサービスは、まさにこの理由から、データを添付するために「ボリューム」を使用します。
したがって、たとえば MySQL サービスを無効にすると、そのボリューム (すべてのデータが含まれている) はそこに静かに存在することになります。再度有効にしても、同じボリュームにアタッチしている限り、すべてのデータはそのまま残ります。
私たちの将来の計画を確認する最良の方法は、プロジェクト ボードをチェックすることですが、ここでは将来の計画をいくつか示します。
self-remove
コマンド: 有効なサービスをすべて削除してから、自己アンインストールしますか?upgrade
: 古いコンテナを破棄し、新しく指定したタグを持つ新しいコンテナを起動し (ユーザーにその入力を求めるプロンプト、デフォルトではlatest
)、他のすべてのパラメータ(ポート、ボリュームなど)を古いコンテナとまったく同じに保ちます。pt/passthrough
: docker へのプロキシ コマンド ( ./takeout pt mysql stop
)あなたが私たちと協力していて、リリースをプッシュするよう割り当てられている場合、最も簡単なプロセスは次のとおりです。
main
の最新バージョンをプルダウンします ( git checkout main && git pull
)php ./takeout app:build
)php ./builds/takeout list
)v1.5.1
)Publish release
クリックします