테이크아웃은 각 개발 환경 종속성에 대해 하나씩 작은 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와 함께 테이크아웃을 설치합니다.
composer global require " tightenco/takeout:~2.8 "
~/.composer/vendor/bin
디렉토리가 시스템의 "PATH"에 있는지 확인하십시오.
터미널 어디에서나 takeout
실행한 다음 명령 이름을 실행하세요.
테이크아웃의 주요 이점 중 하나는 다양한 종속성에 대한 Docker 컨테이너를 빠르고 쉽게 부팅("활성화")하거나 삭제("비활성화")한다는 것입니다.
Docker는 영구 볼륨 저장소를 제공하기 때문에 컨테이너를 삭제해도("비활성화"라고 함) 실제로 해당 데이터는 삭제되지 않습니다. 이는 무분별한 포기로 서비스를 활성화하거나 비활성화할 수 있음을 의미합니다.
활성화할 수 있는 모든 서비스 목록을 표시합니다.
takeout enable
하나 이상의 서비스에 대한 짧은 이름을 전달하고 활성화합니다.
takeout enable mysql
takeout enable redis meilisearch
각 매개변수에 대한 요청을 건너뛰고 기본값을 수락하면 됩니다. 이는 하나의 명령으로 여러 서비스에서도 작동합니다.
takeout enable mysql --default
takeout enable redis meilisearch --default
--
구분 기호 뒤에 컨테이너에 추가 인수를 지정할 수 있습니다.
takeout enable mysql -- -hsome.mysql.host -usome-user
이는 추가 Docker 실행 옵션이 아닌 컨테이너 진입점에 대한 인수입니다(아래 참조).
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
하나 이상의 서비스에 대한 짧은 이름을 전달하고 가장 밀접하게 일치하는 활성화된 서비스를 비활성화합니다.
takeout disable mysql
takeout disable redis meilisearch
takeout disable --all
시작할 수 있는 모든 중지된 컨테이너 목록을 표시합니다.
takeout start
하나 이상의 중지된 컨테이너의 컨테이너 ID를 전달하고 일치하는 중지된 컨테이너를 시작합니다.
takeout start {container_id}
takeout start {container_id1} {container_id2}
활성화된 모든 컨테이너를 시작하려면 -all
플래그를 전달할 수 있습니다.
takeout start --all
중지할 수 있는 실행 중인 모든 컨테이너 목록을 표시합니다.
takeout stop
하나 이상의 실행 중인 컨테이너의 컨테이너 ID를 전달하고 일치하는 실행 중인 컨테이너를 중지합니다.
takeout stop {container_id}
takeout stop {container_id1} {container_id2}
테이크아웃의 또 다른 이점은 여러 버전의 종속성을 동시에 설치하고 실행할 수 있다는 것입니다. 예를 들어, 서로 다른 포트에서 MySQL 5.7과 8.0을 동시에 실행할 수 있다는 의미입니다.
takeout enable mysql
. 처음에는 기본 포트( 3306
)와 첫 번째 버전( 5.7
)을 선택하고, 두 번째에는 두 번째 포트( 3307
), 두 번째 버전( 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
이라는 Docker 네트워크에 자동으로 추가됩니다. 이를 통해 다른 컨테이너에 사용되는 것과 동일한 별칭 및 기본 별칭을 사용할 수 있습니다.
각 컨테이너에는 이 네트워크에서 두 개의 별칭이 제공됩니다.
테이크아웃 네트워크의 다른 컨테이너는 별칭으로 테이크아웃 컨테이너에 액세스할 수 있습니다. 세일링과 테이크아웃을 함께 이용하는 방법은 이 글을 확인하세요.
안타깝게도 그렇지 않습니다.
먼저 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
사용하면 프로젝트별로 종속성을 설정하는데, 이는 작업을 수행하는 완벽한 방법입니다. 전체 글로벌 환경에 대한 각 종속성의 단일 복사본을 보유하는 것이 더 합리적이라면 테이크아웃이 더 합리적입니다.
아니요! 귀하의 데이터는 그대로 유지됩니다! 기본적으로 당사의 거의 모든 서비스는 바로 이러한 이유로 귀하의 데이터를 첨부하기 위해 "볼륨"을 사용합니다.
따라서 예를 들어 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
히트