Nginx 및 Postgres로 Laravel 앱을 도커화합니다. 1장

이 게시물은 저나 이 글을 읽는 모든 사람에게 유용할 수 있는 개인적인 메모로 작성되었습니다.

도커 컨테이너를 사용하면 버전 관리 오류, 호환되지 않는 종속성 등에 대해 걱정할 필요 없이 누구에게나 모든 컴퓨터에 앱을 제공할 수 있습니다.

따라서 이 게시물에는 Postgres를 데이터베이스로 사용하는 Laravel 앱이 있습니다. 이 경우 여러 데이터베이스를 사용하고 있습니다.

쉽게 하기 위해 Laravel 앱, 데이터베이스 postgres 및 웹 서버 Nginx를 도커화합니다.

전제 조건



시작하기 전에 laravel 앱에 새 폴더를 추가해야 합니다.

...rest of laravel dirs and files
|- infra
|--- app
|--- nginx
|------ conf
|--- pgsql
|------ script


도커 구성을 저장할 폴더infra를 생성해 보겠습니다. infra 내에는 laravel & PHP app를 저장할 Dockerfile, 웹 서버용 nginx, 데이터베이스용 pgsql이 있습니다.

PHP



앱을 실행하려면 이러한 PHP 종속성이 필요합니다.



이제 사용할 도커 이미지의 종속성을 확인하겠습니다.

docker run php:7.4-fpm php -m


사용할 PHP 이미지에 일부 종속성이 존재하지 않는 것을 볼 수 있습니다. 이제 커스텀 이미지를 만들어 봅시다.
Dockerfile 폴더 안에 app를 만듭니다.
-> /infra/app/Dockerfile
FROM php:7.4-fpm

RUN apt-get update \
  && apt-get install -y \
  git \
  curl \
  libpng-dev \
  libonig-dev \
  libxml2-dev \
  zip \
  unzip \
  zlib1g-dev \
  libpq-dev \
  libzip-dev

RUN docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
  && docker-php-ext-install pdo pdo_pgsql pgsql zip bcmath gd

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

EXPOSE 9000


기본적으로 이 Dockerfile은 작성기에 필요한 PHP 종속성을 설치한 다음 포트 9000에서 PHP 앱을 노출합니다.

확장 프로그램을 사용자 정의할 수 있습니다. 필요하면 설치할 수 있고, 필요하지 않으면 제거할 수 있습니다. PHP 확장을 설치하는 명령 목록은 here을 참조하십시오.

도커 구성 만들기



그런 다음 프로젝트의 루트로 돌아가서 거기에 docker-compose.yml를 생성합니다.

version: "3.7"

networks:
  app-network:
    driver: bridge

services: 
  app:
    container_name: app
    build:
      context: ./infra/app
      dockerfile: Dockerfile
    image: php-laravel-7.0
    restart: unless-stopped
    tty: true
    working_dir: /var/www
    volumes: 
      - ./:/var/www
    networks: 
      - app-network


기본적으로 이 구성을 복사할 수 있습니다.

원하는 대로 컨테이너 이름을 container_app로, 이미지 이름을 image로 지정할 수 있습니다.
./:/var/wwwvolumes는 laravel 루트./에서 컨테이너 작업 디렉토리/var/www로 laravel 앱을 복사한다는 것을 의미합니다.

네트워크here에 대한 자세한 내용을 읽을 수 있습니다.

...계속하다...

좋은 웹페이지 즐겨찾기