docker中lnmp访问php页面,Docker下部署LNMP工作环境的教程(详细步骤)
本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Docker下部署LNMP工作環(huán)境的教程(詳細(xì)步驟),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。
普通PC環(huán)境也可以用以下配置,只是MYSQL那里換回mysql官方版本就可以。
Docker 安裝$ curl -sSL get.docker.com | sudo sh
工作目錄
/lnmp/conf 存放虛擬主機(jī)配置
/lnmp/data/mysql 存放mysql數(shù)據(jù)庫(kù)數(shù)據(jù)
/lnmp/log 存放nginx、mysql日志
/lnmp/workspace 存放各種項(xiàng)目文件
/lnmp/.env 啟動(dòng)docker時(shí)的環(huán)境變量配置
/lnmp/docker-compose.yml 構(gòu)建時(shí)的配置文件
/lnmp/php/Dockerfile 編譯PHP配置文件
構(gòu)建Nginx
創(chuàng)建項(xiàng)目
先創(chuàng)建一個(gè)靜態(tài)文件index.html
/lnmp/workspace/default/index.html
DocumentHello, Docker!
添加構(gòu)建時(shí)的環(huán)境變量
編輯.env文件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 宿主機(jī)的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.conf
創(chuàng)建/lnmp/conf/nginx.conf文件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;
}
配置虛擬主機(jī)
創(chuàng)建/lnmp/conf/conf.d/default.conf文件
注意: root下的路徑必須是以/var/www/html開(kāi)頭,default是我們本地workspace下的一個(gè)文件夾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;
}
}
構(gòu)建Nginx配置
編輯 docker-composer.yml
以下的${}都是上面.env文件里配置的變量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
啟動(dòng)Nginx
運(yùn)行命令之后,訪問(wèn)樹(shù)莓派的IP,正常的話會(huì)顯示 Hello, Docker!$ docker-compose up
構(gòu)建PHP
編輯/lnmp/.env添加PHP構(gòu)建變量PHP_CONFIG_FILE=./conf/php.ini
PHP_FPM_CONFIG_FILE=./conf/php-fpm.conf
因php.ini配置有點(diǎn)長(zhǎng),可以在下面地址復(fù)制
php.ini
php-fpm.conf
添加Dockerfile
/lnmp/php/DockerfileARG 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
添加構(gòu)建PHP
編輯 /lnmp/docker-compose.yml文件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:
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
虛擬主機(jī)支持PHP解析
/lnmp/conf/conf.d/default.conf
下面fastcgi_pass php:9000的php,是指上面docker-compose.yml的一個(gè)service名稱,可以用來(lái)針對(duì)某個(gè)項(xiàng)目指定PHP版本#...其它代碼
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
添加文件
/lnmp/workspace/default/index.php<?php
echo ‘Hello, PHP!’;
啟動(dòng)預(yù)覽
如果之前沒(méi)有終止進(jìn)程的, 可以ctrl + c終止之后再運(yùn)行下面的命令。
如無(wú)意外,訪問(wèn)樹(shù)莓派的IP會(huì)顯示 Hello, PHP!.$ docker-compose up
添加PHP擴(kuò)展
/lnmp/.env 添加變量,下面以swoole擴(kuò)展演示,其它的擴(kuò)展參考下面的操作就可以PHP_SWOOLE_VERSION=4.2.10
/lnmp/docker-compose.yml 添加變量php:
build:
context: ./php
args:
PHP_VERSION: 7.2
PHP_SWOOLE: ${PHP_SWOOLE_VERSION}
/lnmp/php/Dockerfile 下載并編譯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 \
;fi
重新編譯
注意:Dockerfile有改動(dòng)的話,必須加--build重新編譯一次, 不然docker-compose up的時(shí)候不會(huì)生效$ docker-compose up --build
預(yù)覽
編輯/lnmp/workspace/default/index.php保存,訪問(wèn)樹(shù)莓派的IP,不出意外你可以找到swoole的擴(kuò)展<?php
phpinfo();
構(gòu)建MYSQL
MYSQL持久化
Docker容器服務(wù)刪除了,保證數(shù)據(jù)不會(huì)丟失
創(chuàng)建/lnmp/data/mysql文件夾
構(gòu)建時(shí)變量
編輯/lnmp/.env文件,添加mysql服務(wù)端口、登錄密碼與數(shù)據(jù)持久化文件夾。MYSQL_HOST_PORT=3306
MYSQL_PASSWORD=1234
MYSQL_DATA_DIR=./data/mysql
構(gòu)建配置version: "3"
services:
#... 其它代碼
mysql:
image: tobi312/rpi-mysql
ports:
- ${MYSQL_HOST_PORT}:3306
volumes:
- ${MYSQL_DATA_DIR}:/var/lib/mysql:rw
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}"
啟動(dòng)
啟動(dòng)后,用數(shù)據(jù)連接工具測(cè)試,鏈接地址:樹(shù)莓派IP 端口:3306 用戶名:root 密碼:1234$ docker-compose up
到此為止,屬于你自己的LNMP工作環(huán)境已經(jīng)做好了。
總結(jié)
以上是生活随笔為你收集整理的docker中lnmp访问php页面,Docker下部署LNMP工作环境的教程(详细步骤)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: laravel+php+支付功能,lar
- 下一篇: 面怎么发 教你面食发酵的技巧和方法?