[시리즈] docker & nginx를 이용한 Drupal Env - 2!

3541 단어 drupalphpdockernginx
그래서 우리는 drupal 스택을 위해 nginx 및 php-fpm을 기반으로 빠른 웹 서버를 설정하는 방법에 대해 논의했습니다.


지금은 환경을 고정화할 것입니다.

따라서 기본적인 도커 지식은 더 나아가야 합니다.

먼저 우리는 우리의 경우에 필요한 서비스 또는 그룹화할 docker-compose 파일이 필요합니다.
  • 엔진엑스
  • php-fpm
  • 마리아드비
  • memcached(선택 사항)
  • redis(선택사항)

  • 각 컨테이너에서 필요한 구성 파일( 의 동일한 파일)을 제공하고 해당 파일은 컨테이너에 직접 복사됩니다.

    다음으로 호스트 머신에서 선택한 포트로 각 서비스를 노출 및 매핑하고 의도한 코드베이스 프로젝트를 nginx 및 php-fpm 컨테이너의 볼륨으로 마운트하여 컨테이너 내에서 액세스할 수 있도록 합니다. 영구 데이터베이스 스키마가 필요하므로 Mariadb 컨테이너의 데이터를 저장할 외부 볼륨을 추가해야 합니다.

    또한 필수 서비스(웹 서버 - 데이터베이스 및 php-fpm)에 대한 종속성을 추가할 수 있습니다. 이를 연결하여 액세스 가능한 php 컨테이너 및 mariadb를 갖기 전에 웹 서버가 시작되지 않도록 할 수 있습니다.

    이제 구성 파일을 다루었으므로 사용된 도커 이미지로 이동하겠습니다.
    mariadb의 경우 빌드 구성에 대한 사전 작업이 필요하지 않기 때문에 docker-hub의 공식 이미지를 사용했습니다 ....
    PHP 이미지에 관해서는 일부 패키지(gd imagck apcu memcached redis 작곡가) 및 drush(모든 drupal 개발자가 유용하다고 생각함)를 추가하는 것과 같은 유용한 일부 drupal 조정으로 사용자 지정 이미지를 만들었습니다.
    그 외에도 나는 주로 2가지 이유로 슬릿 커스텀 nginx 이미지를 사용하고 있습니다.

  • Brotli 압축 지원 .

  • 사용자 설정(php 및 nginx 이미지 모두에 대해 프로젝트 루트를 소유할 사용자가 필요함).

  • nginx의 구성 파일을 변경하는 것은 까다로울 수 있으므로 여기에서 안전하게 재생하기 위해 Dockerfile에서 빌드 시간에 수행했습니다.
    마지막으로 다음 docker-compose 파일을 얻었습니다.

    version: "3"
    services:
      web:
        build: ./web
        restart: always
        ports:
          - "80:80"
          - "443:443"
        links:
         - php
         - database
        networks:
          vpcbr:
            ipv4_address: 172.28.0.101
        environment:
          - NGINX_PORT=80
        volumes:
          - ../:/var/www/html
      php:
        build: ./php
        restart: always
        container_name: d8_php
        links:
          - database
        ports:
          - "9000:9000"
        volumes:
          - ../:/var/www/html
        networks:
          vpcbr:
            ipv4_address: 172.28.0.102
    
      database:
        image: mariadb:latest
        restart: always
        hostname: mysql
        environment:
          - MYSQL_ROOT_PASSWORD=root
        networks:
          vpcbr:
            ipv4_address: 172.28.0.103
    
        volumes:
          - "./db:/var/lib/mysql"
          - "./database:/etc/mysql/conf.d"
        ports:
          - "3307:3306"
      redis:
        image: redis
        ports:
          - "6379:6379"
        networks:
          vpcbr:
            ipv4_address: 172.28.0.104
      memcached:
        image: memcached
        ports:
          - "11211:11211"
        networks:
          vpcbr:
            ipv4_address: 172.28.0.105
    networks:
      vpcbr:
        driver: bridge
        ipam:
          config:
            - subnet: 172.28.0.0/16
    

    다음으로 Drupal 구성과 모든 컨테이너를 함께 연결하는 방법에 대해 설명하겠습니다.
  • 코드를 찾을 수 있습니다here.
  • 파트 1: .
  • 파트 2: .



  • (SPOILER : Notice the use of the network key in the docker compose file :D)

    좋은 웹페이지 즐겨찾기