>백엔드 개발 >PHP 튜토리얼 >Docker Compose를 사용하여 Laravel 애플리케이션 조정

Docker Compose를 사용하여 Laravel 애플리케이션 조정

不言
不言원래의
2018-07-06 11:15:211595검색

이 글은 주로 Laravel 애플리케이션을 조정하기 위한 Docker Compose의 사용을 소개합니다. 이제 이를 여러분과 공유합니다.

머리말

Laravel의 공식 개발 환경에서는 Homestead를 권장합니다. 실제로는 Packaged Vagrant box입니다), 상대적으로 무겁다고 느껴져서 Docker compose를 이용하여 개발 환경을 구성하고 여기에 공유해봅니다.

환경 요구 사항

Docker 및 Docker compose를 먼저 설치해야 하며, Docker Warehouse 이미지를 국내 이미지로 교체하는 것이 가장 좋습니다. 일반적으로 개발 컴퓨터에서 Vagrant를 실행한 다음 그 컴퓨터에서 Docker 및 기타 애플리케이션을 실행합니다.

주요 아이디어

Docker에서는 하나의 컨테이너가 하나의 서비스를 실행하도록 공식적으로 권장하므로 Compose 오케스트레이션이 이루어지며 각 서비스는 컨테이너 상호 연결 기술을 통해 통신합니다. 예를 들어 Php 서비스가 Mysql에 연결될 때 다음과 같이 작성하면 됩니다. 호스트 이름을 컨테이너 이름으로 변환하고 내부적으로 특정 IP로 직접 변환합니다. 코드 디렉터리는 데이터 볼륨을 사용하여 컨테이너에서 호스트로 매핑되고, 구성 파일(Nginx 등)도 데이터 볼륨을 통해 컨테이너에 매핑됩니다.

Practice

이런 서비스 세트를 캡슐화해두었습니다. 평소에 사용하신다면 그냥 복제해서 바로 사용하시면 됩니다. 여기서는 주로 구현 아이디어에 대해 이야기하겠습니다.

프로젝트 주소: https://github.com/rootrl/php...

내 프로젝트 디렉토리 구조:

php-environment-with-docker/
├── bin
│ ├── 작곡가
│ ├ ── getContainerIp
│ └── php
├── conf
│ ├── nginx
│ │ └── conf.d
│ │ └── nginx.conf
│ └── redis
│ └── redis .conf
├── docker-compose.yaml
├── Dockerfile.php
├── LICENSE
├── README.MD
└── start

  • bin 이것들은 모두 캡슐화된 명령줄 도구이며 실제로는 Docker 컨테이너 서비스이지만 모두 즉시 사용 가능한 서비스입니다.

  • conf 이 디렉터리는 애플리케이션의 구성 디렉터리입니다. 이는 Volume을 사용하여 컨테이너에 있는

  • docker-composer.yaml의 오케스트레이션 파일에 매핑됩니다.

  • Dockerfile.php php에 대한 자세한 내용은 아래에서 설명합니다. 빌드(DNS 변경 및 특수 확장 설치와 같은 일부 사용자 지정이 있을 예정)

  • start ./start를 실행하여 모든 서비스를 시작합니다.

docekr-compose.yaml

이 파일은 compose

version: '2'

services:
nginx:
  depends_on:
   - "php"

  image: "nginx"

  volumes:
   - "$PWD/conf/nginx/conf.d:/etc/nginx/conf.d"
   - "$PWD/www:/usr/share/nginx/html"
  ports:
   - "8888:80"
  networks:
   - oa-network
  container_name: "oa-nginx"
  command: /bin/bash -c "mkdir -p /var/www && ln -s /usr/share/nginx/html /var/www && nginx -g 'daemon off;'"
php:
  image: "oa-php-fpm"
  build:  
   context: .
   dockerfile: "Dockerfile.php"
  networks:
   - oa-network
  container_name: "oa-php-fpm"
  volumes:
   - "$PWD/www:/var/www/html"

mysql:
  image: mysql:5.7
  volumes:
   - "$PWD/db_data:/var/lib/mysql"
  environment:
   MYSQL_ROOT_PASSWORD: root123
   MYSQL_DATABASE: oa
   MYSQL_USER: oa
   MYSQL_PASSWORD: oa123
  ports:
   - "3306:3306"
  networks:
   - oa-network
  container_name: "oa-mysql"

redis:
  image: "redis"
  ports:
   - "6379:6379"
  networks:
   - oa-network
  volumes:
   - "$PWD/conf/redis/redis.conf:/usr/local/etc/redis/redis.conf"
  container_name: "oa-redis"

networks:
oa-network:
  driver: bridge

의 오케스트레이션 파일입니다. php-fpm, nignx, mysql, redis의 네 가지 서비스가 여기에 정의되어 있습니다(다른 서비스가 필요한 경우 직접 추가하세요). 그런 다음 모든 컨테이너가 쉽게 통신할 수 있도록 공용 네트워크를 정의합니다.

예를 들어, nginx.conf

server {
    listen       80;
    server_name  localhost;
    root /usr/share/nginx/html/public;
    index index.php index.html;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/public/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

여기 php-fpm을 사용한 연결 방법이 있습니다: php:9000

Dockerfile.php

FROM php:7.2-fpm
    Run echo "nameserver 223.5.5.5" >> /etc/resolv.conf \
    && echo "nameserver 223.6.6.6" >> /etc/resolve.conf \
    && apt-get update \
    && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install mysqli pdo_mysql \
    && pecl install swoole \
    && pecl install redis \
    && docker-php-ext-enable swoole redis

이것은 PHP 이미지 빌드입니다. 여기에서 DNS 서버가 변경되고 여러 PHP 확장이 있습니다. 설치되어 있습니다.

모든 서비스를 시작하려면

Start

./start를 사용하세요.

명령줄

./bin/php -v

# Laravel artisan
./bin/php artisan

위 내용은 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트로!

관련 권장 사항:

위 내용은 Docker Compose를 사용하여 Laravel 애플리케이션 조정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 빠른 정렬 코드다음 기사:PHP 빠른 정렬 코드