Make를 사용하여 docker-compose Symfony 프로젝트를 관리하는 방법
만들기란 무엇입니까?
GNU project website의 make 페이지에 따르면 :
GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files.
Make gets its knowledge of how to build your program from a file called the makefile, which lists each of the non-source files and how to compute it from other files. When you write a program, you should write a makefile for it, so that it is possible to use Make to build and install the program.
Makefile 사용 방법을 배우기 좋은 곳은 makefiletutorial website입니다.
Make를 어떻게 사용할까요?
정의에서 볼 수 있듯이 주요 목적은 소스 코드에서 파일을 생성하는 것이지만 docker-compose symfony 프로젝트를 관리하는 데 필요한 명령 실행을 단순화하는 데 사용할 것입니다.
Make의 대상을 사용하면 다른 명령에 대한 별칭을 만들 수 있습니다. 예를 들어 컨테이너에서 symfony 명령을 실행하려면 다음과 같이 실행합니다.
docker exec -it bin/console your:command
이 명령을 자주 실행해야 하는 경우 짜증이 날 수 있습니다. make를 사용하여 다음 대상을 정의할 수 있습니다.
console/%
docker exec -it bin/console $*
이 대상을 사용하려면 간단히 실행하십시오.
make console/your:comand
docker의 전체 명령보다 훨씬 간단합니다.
Makefile 만들기
먼저 프로젝트 루트 디렉터리에 파일 이름
Makefile
을 만듭니다.Docker 관련 대상
우리가 만들 첫 번째 대상은 docker-compose 명령을 실행하는 것입니다.
docker-compose/%:
@USER=${USER} docker-compose $*
USER=${USER}
는 컨테이너 내부에서 사용하려는 사용자를 docker-compose에 알리는 것입니다. 이는 호스트와 컨테이너 생성 파일 간의 권한 오류를 방지하는 데 필요합니다.작동하게 하려면 Makefile 시작 부분에 다음 변수를 추가합니다.
USER := $(shell id -u):$(shell id -g)
이를 통해 사용자의
user:group
를 USER
변수로 설정합니다.마지막으로 서비스 구성(docker-composer.yml)에
user
옵션을 추가하고 환경 변수$USER
로 설정해야 합니다.example_php:
container_name: example_php
user: $USER
build:
context: .
working_dir: /var/www/app/
volumes:
- './:/var/www/app/'
도우미 대상
일상적인 사용을 단순하게 유지하기 위해 다음 도우미 대상을 추가합니다.
up:
@make docker-compose/"up -d"
start:
@make docker-compose/"start"
stop:
@make docker-compose/"stop"
build:
@make docker-compose/build
exec/%:
@docker exec -it ${PHP_CONTAINER} $*
bash:
@make exec/bash
기타 대상
이전에 정의된 도커 대상이 있으면 대상을 쉽게 추가할 수 있습니다. 예를 들어 콘솔 명령을 실행하기 위해 symfony 콘솔 대상을 추가할 수 있습니다.
console/%:
@make exec/"bin/console $*"
보시다시피 이전에 정의한
exec
대상을 사용합니다.이 형식을 사용하여 필요할 수 있는 모든 대상을 추가할 수 있습니다.
모두 함께
# ----------------------------------------------------------------------------
# Configuration
# ----------------------------------------------------------------------------
USER := $(shell id -u):$(shell id -g)
NGINX_CONTAINER = "example_nginx"
PHP_CONTAINER = "example_php"
# ----------------------------------------------------------------------------
# Docker
# ----------------------------------------------------------------------------
docker-compose/%:
@USER=${USER} docker-compose $*
up:
@make docker-compose/"up -d"
build:
@make docker-compose/build
exec/%:
@docker exec -it ${PHP_CONTAINER} $*
bash:
@make exec/bash
# ----------------------------------------------------------------------------
# Composer
# ----------------------------------------------------------------------------
composer/%:
@make exec/"composer $*"
composer-install:
@make composer/"install"
composer-require/%:
@make composer/"require $*"
composer-require-dev/%:
@make composer/"require --dev $*"
# ----------------------------------------------------------------------------
# Symfony
# ----------------------------------------------------------------------------
console/%:
@make exec/"bin/console $*"
# ----------------------------------------------------------------------------
# Tests
# ----------------------------------------------------------------------------
phpunit/%:
@make exec/"vendor/bin/phpunit -c phpunit.xml.dist $*"
test:
@make phpunit/" "
test/%:
@make phpunit/"--testsuite $*"
사용 방법
설정
아직 서비스를 구축하지 않았다면
make up
를 실행하십시오.서비스가 이미 빌드된 경우
make up
를 실행합니다.종속성
make composer-install
를 실행하여 모든 종속성을 설치합니다.패키지를 요구하려면
make composer-require/example/package
를 실행하십시오. 예를 들어, ramsey/uuid를 설치하려면 make composer-require/ramsey/uuid
를 실행합니다.심포니 명령
실행 중인 모든 symfony 명령을 실행할 수 있습니다
make console/your:command
. 예를 들어 캐시를 지워야 하는 경우 make console/cache:clear
를 실행합니다. 명령을 큰따옴표로 감싸는 인수 및 옵션을 전달할 수 있습니다: make console/cache:clear -e prod
.테스트
모든 제품군을 실행하려면
make test
를 실행하십시오.단위 테스트 스위트만 실행하려면
make test/unit
를 실행하십시오.
Reference
이 문제에 관하여(Make를 사용하여 docker-compose Symfony 프로젝트를 관리하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gricob/how-to-manage-docker-compose-symfony-project-using-make-fp0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)