이 문서는 Docker에서 LNMP 작업 환경을 배포하는 방법에 대한 튜토리얼(자세한 단계)을 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 친구에게 도움이 되기를 바랍니다.
다음 구성은 일반 PC 환경에서도 사용할 수 있으며, MYSQL을 공식 버전의 mysql로 교체하면 됩니다.
Docker 설치
$ curl -sSL get.docker.com | sudo sh
작업 디렉터리
/lnmp/conf 가상 호스트 구성 저장
/lnmp/data/mysql mysql 데이터베이스 데이터 저장
/lnmp/log nginx, mysql 로그 저장
/lnmp/workspace 저장소 다양한 프로젝트 파일
/lnmp/.env docker 시작 시 환경 변수 구성
/lnmp/docker-compose.yml 빌드 시 구성 파일
/lnmp/php/Dockerfile PHP 구성 파일 컴파일
Nginx 빌드
Create a project
먼저 정적 파일을 생성합니다. /lnmp/conf/nginx.conf 파일 만들기
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> Hello, Docker! </body> </html>
참고: 루트 아래 경로는 /var/www여야 합니다. /html, 기본값은 로컬 작업공간 아래의 폴더입니다
SOURCE_DIR=./workspace HTTP_HOST=80 NGINX_VERSION=alpine NGINX_CONFD_DIR=./conf/conf.d NGINX_CONF_FILE=./conf/nginx.conf NGINX_LOG_DIR=./log SOURCE_DIR=./workspace workspace文件夹挂载到nginx下的 /var/www/html HTTP_HOST=80 宿主机的80端口映射到nginx下的80端口 NGINX_VERSION=alpine nginx镜像使用alpine版本 NGINX_CONFD_DIR=./conf/conf.d conf.d文件夹挂载到nginx下的/etc/nginx/conf.d NGINX_CONF_FILE=./conf/nginx.conf nginx.conf挂载nginx的 /etc/nginx/nginx.conf NGINX_LOG_DIR=./log
Nginx 구성 빌드
docker-composer.yml을 편집하세요다음 ${}는 위의 .env 파일에 구성된 모든 변수입니다
user nginx; worker_processes 1; pid /var/run/nginx.pid; error_log /var/log/nginx/nginx.error.log warn; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/nginx.access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
Nginx 시작
명령을 실행한 후 Raspberry Pi의 IP에 액세스합니다. 일반적으로 Hello, Docker!
server { listen 80; server_name localhost default-server; root /var/www/html/default; index index.php index.html index.htm; access_log /var/log/nginx/nginx.localhost.access.log main; error_log /var/log/nginx/nginx.localhost.error.log warn; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
Build PHP
/lnmp/.env를 편집하여 PHP 빌드 변수를 추가합니다version: "3" services: nginx: image: nginx:${NGINX_VERSION} ports: - ${HTTP_HOST}:80 volumes: - ${SOURCE_DIR}:/var/www/html/:rw - ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro - ${NGINX_LOG_DIR}:/var/log/nginx/:rw restart: always
php-fpm.conf
Add Dockerfile/lnmp/php/Dockerfile$ docker-compose up
/lnmp/docker-compose .yml 파일 편집
PHP_CONFIG_FILE=./conf/php.ini PHP_FPM_CONFIG_FILE=./conf/php-fpm.conf
/lnmp/conf/conf.d/default.conf
아래 fastcgi_pass php:9000의 php는 다음과 같은 서비스 이름을 나타냅니다. 위의 docker-compose.yml을 사용하면 특정 프로젝트의 PHP 버전을 지정하는 데 사용할 수 있습니다ARG PHP_VERSION FROM php:${PHP_VERSION}-fpm RUN apt update RUN apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng-dev \ unixodbc-dev \ gcc g++ make autoconf libc-dev pkg-config
파일을 추가하세요
/lnmp/workspace/default/index.phpversion: "3" services: nginx: image: nginx:${NGINX_VERSION} ports: - ${HTTP_HOST}:80 volumes: - ${SOURCE_DIR}:/var/www/html/:rw - ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro - ${NGINX_LOG_DIR}:/var/log/nginx/:rw restart: always php: build: context: ./php args: PHP_VERSION: 7.2 volumes: - ${SOURCE_DIR}:/var/www/html/:rw - ${PHP_PHP_CONFIG_FILE}:/usr/local/etc/php/php.ini:ro - ${PHP_FPM_CONFIG_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw cap_add: - SYS_PTRACE restart: always networks: - default
미리보기 시작
If 이전에 프로세스를 종료한 적이 없다면 ctrl + c를 사용하여 종료할 수 있습니다. 그런 다음 다음 명령을 실행합니다.예기치 않은 일이 발생하지 않으면 Raspberry Pi에 액세스할 때 IP에 Hello, PHP!가 표시됩니다.
#...其它代码 location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Add PHP Extension
/lnmp/.env 다음은 다른 확장에 대한 데모입니다. , 다음 작업을 참고하세요.<?php echo ‘Hello, PHP!’;/lnmp/docker-compose.yml
$ docker-compose up/lnmp/php/Dockerfile에 변수를 추가할 수 있습니다. swoole
PHP_SWOOLE_VERSION=4.2.10Recompile
참고: Dockerfile이 변경된 경우 , --build를 추가하고 다시 컴파일해야 합니다. 그렇지 않으면 docker-compose가 적용되지 않습니다
php: build: context: ./php args: PHP_VERSION: 7.2 PHP_SWOOLE: ${PHP_SWOOLE_VERSION}
Preview/lnmp/workspace/default/index.php를 편집하고 저장한 다음 Raspberry Pi의 IP에 액세스합니다. 예상대로 swoole 확장을 찾을 수 있습니다
# ...其它代码 ARG PHP_SWOOLE=false RUN if [ ${PHP_SWOOLE} != false ]; then \ curl -O http://pecl.php.net/get/swoole-${PHP_SWOOLE}.tgz -L \ && pecl install swoole-${PHP_SWOOLE}.tgz \ && docker-php-ext-enable swoole \ ;fiBuild MYSQL
MYSQL 지속성
$ docker-compose up --build빌드 구성
<?php phpinfo();Start시작 후 데이터 연결 도구를 사용하여 테스트합니다. 링크 주소: Raspberry Pi IP 포트: 3306 사용자 이름: root 비밀번호: 1234
MYSQL_HOST_PORT=3306 MYSQL_PASSWORD=1234 MYSQL_DATA_DIR=./data/mysql지금까지 자체 LNMP 작업 환경은 다음과 같습니다. 준비가 된.
위 내용은 Docker에서 LNMP 작업 환경 배포에 대한 튜토리얼(자세한 단계)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!