Slim 4 애플리케이션 개발 환경에 Docker 사용

8280 단어 slimdockerroutingphp
시리즈의 첫 번째 부분에서는 프레임워크가 어떻게 작동하는지 알기 위해 작은 Slim 4 애플리케이션을 작성하지만 실제 애플리케이션에서는 웹 페이지에 메시지를 인쇄하는 대신 더 복잡한 문제를 처리하는 방법을 알아야 합니다.

소프트웨어 개발자로서 우리는 먼저 작업 환경을 준비해야 하며 우리가 작성한 코드가 실행될 환경이 많기 때문에 이러한 환경 특성이 공통인지 확인하여 놀라움의 수를 최소화해야 합니다.

또한 팀 구성원으로서 동일한 개발 환경을 갖는 것은 로컬 환경의 영향 없이 모두 동일한 결과를 얻는 데 도움이 될 수 있습니다.

다행히 Docker은 이러한 목표를 달성하는 데 도움이 될 수 있습니다.

도커 디렉토리 생성


docker라는 새 디렉터리를 만듭니다. 이 디렉터리에는 Docker 컨테이너 정의가 포함되며 이름을 지정할 필요가 없습니다docker.

$ mkdir docker


PHP 7.4 컨테이너 정의



1- docker 디렉토리 안에 php라는 새 하위 디렉토리를 추가합니다.

$ mkdir -p docker/php


2- 새Dockerfile 파일 만들기(확장자 없음)

touch docker/php/Dockerfile


php Dockerfile을 열고 다음 지침을 추가합니다.

FROM php:7.4-fpm

RUN apt update \
    && apt install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip libpq-dev \
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
    && docker-php-ext-install intl opcache pdo pdo_pgsql \
    && pecl install apcu \
    && docker-php-ext-enable apcu \
    && docker-php-ext-configure zip \
    && docker-php-ext-install zip

WORKDIR /var/www/slim_app

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

RUN git config --global user.email "[email protected]" \
    && git config --global user.name "Your Name"


Note: Make sure to replace git credentials in the last two lines with your git credentials



위의 지침은 PHP 7.4 FPM 이미지에서 PHP 컨테이너를 스캐폴딩하고 다음을 수행합니다.
  • Slim 응용 프로그램이 의존하는 PHP 확장을 설치합니다
  • .
  • 컨테이너의 작업 디렉토리를 /var/www/slim_app로 설정합니다.
  • 작성기 설치

  • NGINX 웹 서버 컨테이너 정의



    PHP 이미지와 달리 docker 디렉토리의 하위 디렉토리에는 NGINX 기본 구성만 필요합니다.

    새 nginx 디렉토리를 추가합니다.




    $ mkdir -p docker/nginx
    


    기본 구성 파일을 추가합니다.




    $ touch docker/nginx/default.conf
    

    docker/nginx/default.conf를 다음과 같이 수정합니다.

    server {
    
        listen 80;
        index index.php;
        server_name localhost;
        root /var/www/slim_app/public;
        error_log /var/log/nginx/project_error.log;
        access_log /var/log/nginx/project_access.log;
    
        location / {
            try_files $uri /index.php$is_args$args;
        }
    
        location ~ ^/index\\.php(/|$) {
            fastcgi_pass php:9000;
            fastcgi_split_path_info ^(.+\\.php)(/.*)$;
            include fastcgi_params;
    
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
    
            fastcgi_buffer_size 128k;
            fastcgi_buffers 4 256k;
            fastcgi_busy_buffers_size 256k;
    
            internal;
        }
    
        location ~ \\.php$ {
            return 404;
        }
    
    }
    


    이것은 PHP 애플리케이션을 실행하는 데 필요한 가장 간단한 NGINX 구성입니다. 이전에 정의한 PHP 컨테이너의 포트 9000에 매핑fastcgi_pass합니다.

    컨테이너 이미지를 합성해 봅시다



    PHP 및 NGINX 정의 컨테이너를 사용하려면 애플리케이션의 루트 폴더에 생성docker-compose.yml해야 합니다.

    version: "3.8"
    
    services:
      php:
        container_name: slim_php
        build:
          context: ./docker/php
        ports:
          - '9000:9000'
        volumes:
          - .:/var/www/slim_app
    
      nginx:
        container_name: slim_nginx
        image: nginx:stable-alpine
        ports:
          - '8080:80'
        volumes:
          - .:/var/www/slim_app
          - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
        depends_on:
          - php
    


    PHP 컨테이너에 대해 여기에 있는 내용을 살펴보겠습니다.
  • NGINX 컨테이너 구성과 달리 PHP 컨테이너에는 이미지 키가 없지만 docker/php/Dockerfile를 사용하여 컨테이너를 빌드하기 위한 빌드 컨텍스트가 있습니다.
  • 컴퓨터의 포트 9000이 컨테이너의 9000에 매핑됨
  • 볼륨은 컨테이너에서 생성된 데이터를 저장하도록 선언됩니다. 이 예제의 경우 프로젝트에 Slim 응용 프로그램 코드를 저장합니다.

  • NGINX의 경우
  • nginx:stable-alpine은 컨테이너를 빌드하기 위해 docker-hub에서 가져옵니다.
  • 컴퓨터의 포트 8080이 컨테이너의 포트 80에 매핑됩니다.
  • 응용 프로그램에 대한 NGINX 기본 구성 파일 및 PHP 코드를 유지하는 데 필요한 볼륨을 선언합니다.

  • 컨테이너 빌드



    다음 명령을 실행하여 컨테이너를 빌드합니다.

    $ docker-compose up -d --build
    


    컨테이너가 성공적으로 빌드되면 터미널은 다음 스크린샷과 같은 메시지를 출력해야 합니다.



    컨테이너가 실행 중인지 확인하려면 Docker Desktop 앱을 열면 아래 스크린샷과 같이 컨테이너가 실행되고 있음이 표시되어야 합니다.



    명령줄을 사용하여 컨테이너의 상태를 알 수 있습니다.

    $ docker ps
    


    다음과 같이 인쇄해야 합니다.


    이제 URLlocalhost:8080을 방문하면 NGINX에 대해 구성한 포트를 입력하고 첫 번째 부분에서 빌드한 Slim 애플리케이션을 실행해야 합니다.

    GitHub 리포지토리에는 development-environment-part-2 의 이 부분에 코드가 있습니다.

    좋은 웹페이지 즐겨찾기