컨테이너 내에서 명령을 실행하도록 Makefile 구성

명령을 잊는 것은 저에게 매우 쉽습니다. ... 그것이 Makefile이 오랫동안 제 친구였던 이유입니다. 그리고 나서... 호스트에서 컨테이너로 또는 그 반대로 왔다 갔다 해야 하는 것보다 더 짜증나는 일은 없습니다. 컨테이너 내부에서 명령을 실행하는 쉬운 방법이 있지만 항상 머신에 남아 있다면 어떨까요?

다음 게시물에서는 Makefile을 사용하여 컨테이너 내에서 명령을 실행하는 흥미로운 방법을 공유하고 싶습니다. 현재 예제는 호스트에서 작곡가를 실행하는 방법을 보여줍니다. 다음 세 가지 간단한 구성을 보여 드리겠습니다.
  • docker-compose.yml
  • 도커파일
  • 메이크파일

  • 여기서 초점은 Makefile의 구성이므로 docker-compose.yml 파일이나 Dockerfile 파일에 너무 많은 주의를 기울이지 마십시오. 그것들은 개선될 수 있지만 ... 여기서 주요 초점은 Makefile입니다.

    도커 작성.yaml



    이 예제는 간단하며 Dockerfile을 찾을 서비스의 컨텍스트를 정의합니다. 컨테이너를 활성 상태로 유지하기 위해 진입점을 사용합니다. 여기서의 목적은 단순히 살아 있는 서비스를 만드는 것입니다.

    version: '3.7'
    
    services:
        php-dev-to:
            restart: always
            build:
                context: . 
            entrypoint: ["tail", "-f", "/dev/null"]
    


    도커파일



    여기에 Dockerfile이 있습니다. 당신이 볼 수 있듯이 ... 우리는 단지 알파인 이미지 광고 작곡가를 가지고 있습니다. Composer가 다른 이미지에서 설치되었습니다. 내가 단순히 좋아하는 멋진 트릭.

    FROM php:8.1-alpine
    COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
    


    메이크파일



    마지막으로 Makefile . 이 파일에는 변수가 거의 없습니다. 타겟 업 및 빌드는 자명합니다. 이 Makefile 사용법을 공유하도록 설득한 대상은 작성기 대상입니다.

    composer:
        $(docker_exec) $(php_container) composer $(args)
    .PHONY: composer
    

    make composer <something>를 입력할 때마다 <something>의 내용이 $(args)를 통해 정의된 변수인 $(filter-out $@,$(MAKECMDGOALS))를 통해 컨테이너로 전송됩니다. 예를 들어 make composer require phpunit/phpunit를 사용하여 컨테이너 내부에 phpunit을 설치할 수 있습니다.

    여기 완전한 Makefile이 있습니다.

    php_container := php-dev-to
    docker := docker-compose
    compose := $(docker) --file docker-compose.yml
    docker_exec := $(compose) exec
    args = $(filter-out $@,$(MAKECMDGOALS))
    
    build:
        $(docker) up --build -d
    .PHONY: build
    
    up:
        $(docker) up -d
    .PHONY: up
    
    composer:
        $(docker_exec) $(php_container) composer $(args)
    .PHONY: composer
    


    나를 따르라



    이 게시물이 마음에 들면 아래에 댓글을 남기거나 저를 팔로우하여 다음 기사를 확인하세요.

    좋은 웹페이지 즐겨찾기