PHP 응용 용기 화 및 배치 방법

PHP 는 세계 에서 가장 좋 은 언어 입 니 다.
전형 적 인 LNMP(Liux+nginx+phop+my sql)환경 에는 기 존의 배치 스 크 립 트 가 많 지만 Docker 가 성행 하 는 오늘날 에 도 많은 학생 들 이 어떻게 배치 하 는 지 에 문제 가 있 기 때문에 이 편 은 Docker 와 docker-compose 를 사용 하여 서비스 기 에 phop 응용 을 배치 하 는 방법 을 간단하게 소개 합 니 다.
우선 과거의 nginx 에서 phop 설정 을 살 펴 보 겠 습 니 다.

location ~ \.php$ {
 try_files  $uri =404;
 include   fastcgi_params;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
모든 phop 파일 은 phop 엔진 을 사용 하여 분석 합 니 다.phop 은 로 컬 9000 포트(ip/유 닉 스 domain sockets 를 통 해 접근 할 수 있 습 니 다)에서 실 행 됩 니 다.로 컬 일 수도 있 으 니 원 격 서 비 스 를 통 해 분석 할 수도 있 습 니 다.
따라서 우리 의 nginx 서 비 스 는 다음 과 같이 설정 합 니 다.

server {
 listen  80;
 charset utf-8;
 # access_log /var/log/nginx/nginx.access.log main;
 # error_log /var/log/nginx/error.log;

 root /var/www/html;
 index index.php index.html;

 add_header X-Cache $upstream_cache_status;

 location ~ \.php$ {
  try_files  $uri =404;
  include   fastcgi_params;
  fastcgi_pass php-fpm:9000;
  fastcgi_index index.php;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_param PATH_INFO $fastcgi_path_info;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }
}

이 동시에 비교적 까다 로 운 문 제 는 phop 코드 가 nginx 와 phop 엔진 에 존재 해 야 한 다 는 것 입 니 다.그렇지 않 으 면 해석 할 수 없 지만 이것 은 모두 일이 아 닙 니 다.docker 의 volume 천연 지원!
아래 docker-compose.yml 설정 을 직접 보 세 요:

version: '2'
services:
 nginx:
  image: nginx:stable-alpine
  ports:
   - 80:80
  volumes:
   - ./conf/nginx/conf.d:/etc/nginx/conf.d
  volumes_from:
   - php-fpm
  restart: always

 php-fpm:
  image: php:7.1-fpm-alpine
  volumes:
   - ./code:/var/www/html
  restart: always

주의 점:
php-fpm 로 컬 디 렉 터 리 code 를/var/www/html 에 마 운 트 했 습 니 다.
nginx conf 에서 service 사용php-fpm
nginx volumes 통과from 명령 은 php-fpm 의/var/www/html 를 공유 합 니 다.
code 디 렉 터 리 아래 index.php 에 다음 과 같이 쓰 십시오.

<?php
echo phpinfo();
그리고 실행:

# bash
docker-compose up
브 라 우 저 를 열 면 익숙 한 phopinfo 를 볼 수 있 습 니 다:

그럼 질문 이 왔 습 니 다.동료 가 물 어 볼 것 이 있 습 니 다.의지 하면 어떻게 합 니까?좋아,이것 이 바로 내 가 계속 말 하고 자 하 는 것 이다.
프로젝트 에 Dockerfile 을 넣 으 십시오:

FROM php:7.1-fpm-alpine
RUN docker-php-install pdo pdo-mysql
COPY src /var/www/html
구축 하면 아 리 클 라 우 드 미 러 서비스 구축 기능 이나 Docker 가 제공 하 는 자동 구축 을 선택 하고 이전 docker-compose.yml 을 업데이트 하면 됩 니 다.

version: '2'
services:
 nginx:
  image: nginx:stable-alpine
  ports:
   - 8000:80
  volumes:
   - ./conf/nginx/conf.d:/etc/nginx/conf.d
  volumes_from:
   - php-fpm
  restart: always

 php-fpm:
  image: {YOUR_PHP_IMAGE_NAME}:{TAG}
  restart: always

이 예제 코드:
ImplementsIO/docker-labs

좋은 웹페이지 즐겨찾기