Takeout adalah alat CLI untuk menjalankan container Docker kecil, satu untuk setiap dependensi lingkungan pengembangan Anda.
Ini dimaksudkan untuk dipasangkan dengan alat seperti Laravel Valet. Saat ini kompatibel dengan macOS, Linux, Windows 10 dan WSL2.
Dengan takeout enable mysql
Anda menjalankan MySQL, dan tidak perlu khawatir tentang pengelolaan atau perbaikan Homebrew MySQL lagi.
Namun Anda juga dapat dengan mudah mengaktifkan ElasticSearch, PostgreSQL, MSSQL, Mongo, Redis, dan lainnya, dengan perintah sederhana. Untuk daftar layanan saat ini, lihat kelas yang tersedia di direktori ini: https://github.com/tighten/takeout/tree/main/app/Services
Instal Takeout dengan Composer dengan menjalankan:
composer global require " tightenco/takeout:~2.8 "
Pastikan direktori ~/.composer/vendor/bin
ada di "PATH" sistem Anda.
Jalankan takeout
dan kemudian nama perintah dari mana saja di terminal Anda.
Salah satu manfaat utama Takeout adalah melakukan boot ("mengaktifkan") atau menghapus ("menonaktifkan") kontainer Docker untuk berbagai dependensi Anda dengan cepat dan mudah.
Karena Docker menawarkan penyimpanan volume yang persisten, menghapus sebuah container (yang kami sebut "menonaktifkannya") tidak benar-benar menghapus datanya. Itu berarti Anda dapat mengaktifkan dan menonaktifkan layanan dengan pengabaian yang sembrono.
Tampilkan daftar semua layanan yang dapat Anda aktifkan.
takeout enable
Berikan nama pendek dari satu atau lebih layanan, aktifkan layanan tersebut.
takeout enable mysql
takeout enable redis meilisearch
Jika Anda ingin melewatkan permintaan untuk setiap parameter dan terima saja defaultnya. Ini juga berfungsi dengan banyak layanan dalam satu perintah.
takeout enable mysql --default
takeout enable redis meilisearch --default
Anda dapat menentukan argumen tambahan ke wadah setelah --
pemisah:
takeout enable mysql -- -hsome.mysql.host -usome-user
Perhatikan bahwa ini adalah argumen untuk Entrypoint container, bukan opsi eksekusi buruh pelabuhan tambahan (lihat di bawah).
docker run
ekstra Di balik terpal, perintah takeout enable
menghasilkan perintah docker run
. Terkadang Anda mungkin ingin menentukan opsi tambahan pada perintah docker run
seperti variabel lingkungan tambahan atau pemetaan volume tambahan. Anda dapat meneruskan string dengan semua opsi docker run
tambahan menggunakan opsi --run=
:
takeout enable mysql --run= " {docker-run-options} "
Yang akan menghasilkan perintah berikut:
docker run {docker-run-options} {service-options} mysql/mysql-server
Dimana {docker-run-options}
adalah opsi yang Anda tentukan di dalam opsi --run
dan {service-options}
dihasilkan berdasarkan opsi default untuk layanan tersebut.
docker run
dengan Argumen Kontainer Anda dapat memadupadankan opsi run
dengan argumen container:
takeout enable mysql --run= " {docker-run-options} " -- -hsome.mysql.host -usome-user
Tampilkan daftar semua layanan aktif yang dapat Anda nonaktifkan.
takeout disable
Melewati nama pendek satu atau lebih layanan, nonaktifkan layanan aktif yang paling cocok dengan layanan tersebut.
takeout disable mysql
takeout disable redis meilisearch
takeout disable --all
Tampilkan daftar semua kontainer yang dihentikan yang dapat Anda mulai.
takeout start
Melewati ID kontainer dari satu atau lebih kontainer yang dihentikan, mulai kontainer yang dihentikan yang cocok dengan kontainer tersebut.
takeout start {container_id}
takeout start {container_id1} {container_id2}
Anda dapat meneruskan tanda -all
untuk memulai semua container yang diaktifkan.
takeout start --all
Tampilkan daftar semua container yang sedang berjalan yang dapat Anda hentikan.
takeout stop
Melewati ID kontainer dari satu atau lebih kontainer yang sedang berjalan, hentikan kontainer yang sedang berjalan yang cocok dengan kontainer tersebut.
takeout stop {container_id}
takeout stop {container_id1} {container_id2}
Manfaat Takeout lainnya adalah memungkinkan Anda menginstal dan menjalankan beberapa versi dependensi secara bersamaan. Artinya, misalnya, Anda dapat menjalankan MySQL 5.7 dan 8.0 secara bersamaan, pada port yang berbeda.
Jalankan takeout enable mysql
dua kali; pertama kali, Anda ingin memilih port default ( 3306
) dan versi pertama ( 5.7
), dan kedua kalinya, Anda ingin memilih port kedua ( 3307
), versi kedua ( 8.0
) dan a nama volume yang berbeda (sehingga tidak berbagi mysql_data
yang sama).
Sekarang, jika Anda menjalankan takeout list
, Anda akan melihat kedua layanan berjalan secara bersamaan.
+--------------+----------------+---------------+-----------------------------------+
| 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 |
+--------------+----------------+---------------+-----------------------------------+
Kontainer takeout secara otomatis ditambahkan ke jaringan Docker bernama takeout
. Hal ini memungkinkan Anda untuk menggunakan aliasing dan aliasing dasar yang sama dengan yang digunakan untuk container lainnya.
Setiap kontainer diberikan dua alias di jaringan ini:
Penampung lain di jaringan takeout dapat mengakses penampung Takeout dengan aliasnya. Lihat artikel ini tentang bagaimana Anda dapat menggunakan layar dan takeout secara bersamaan
Sayangnya, tidak.
Pertama, jalankan lsof -i :3306
(di mana 3306 adalah port yang tidak tersedia.)
Jika Anda melihat output seperti ini:
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)
Solusinya adalah dengan menutup GUI database Anda, dan kemudian harus dirilis.
Menggunakan docker-compose
akan menyiapkan dependensi Anda berdasarkan proyek per proyek, yang merupakan cara yang sangat baik untuk melakukan berbagai hal. Jika lebih masuk akal bagi Anda untuk memiliki satu salinan dari setiap dependensi untuk seluruh lingkungan global Anda, Takeout lebih masuk akal.
Tidak! Data Anda akan tetap ada! Secara default, hampir semua layanan kami menggunakan "volume" untuk melampirkan data Anda karena alasan ini.
Jadi, ketika Anda menonaktifkan layanan MySQL, misalnya, volume itu--dengan semua data Anda di dalamnya--akan diam saja. Dan ketika Anda mengaktifkannya kembali, selama Anda memasangkannya ke volume yang sama, semua data Anda akan tetap ada.
Cara terbaik untuk melihat rencana masa depan kami adalah dengan memeriksa Dewan Proyek, namun berikut adalah beberapa rencana untuk masa depan:
self-remove
: Menghapus semua layanan yang diaktifkan dan mungkin mencopot pemasangan sendiri?upgrade
: menghancurkan kontainer lama, memunculkan kontainer baru dengan tag yang baru ditentukan (meminta pengguna untuk itu, defaultnya latest
) dan menjaga semua parameter lainnya (misalnya port, volume) sama persis dengan yang lamapt/passthrough
: perintah proxy melalui buruh pelabuhan ( ./takeout pt mysql stop
)Jika Anda bekerja dengan kami dan ditugaskan untuk mendorong rilis, inilah proses termudah:
main
( git checkout main && git pull
)php ./takeout app:build
)php ./builds/takeout list
)v1.5.1
)Publish release