Make를 사용하여 docker-compose Symfony 프로젝트를 관리하는 방법

9390 단어 dockersymfonymakephp
필자는 symfony 프로젝트에 docker-compose를 설정하는 방법을 설명했습니다. docker/docker-compose 명령을 사용하면 docker-compose 프로젝트를 관리하는 것이 귀찮을 수 있습니다. Make를 사용하면 더 간단하게 관리할 수 있습니다.

만들기란 무엇입니까?



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:groupUSER 변수로 설정합니다.

마지막으로 서비스 구성(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: 서비스 구축 및 시작
  • 시작: 서비스 시작
  • 중지: 서비스 중지
  • 빌드: 서비스 빌드 또는 재구축
  • exec: PHP 서비스 내에서 명령 실행
  • bash: PHP 서비스 내에서 bash를 실행합니다.

  • 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를 실행하십시오.

    좋은 웹페이지 즐겨찾기