激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP 應用容器化以及部署方法

PHP 應用容器化以及部署方法

2019-10-21 11:35蘇依蜀黍de小木屋 PHP教程

本文給大家分享的是如何把PHP應用容器化,以及使用docker在服務器上部署PHP應用,非常的簡單實用,有需要的小伙伴可以參考下

PHP 是世界上最好的語言。

經典的 LNMP(linux + nginx + php + mysql)環境有很多現成的部署腳本,但是在 Docker 盛行的今天,依然有很多同學在如何部署上有一些列問題,所以這篇簡單介紹一下如何使用 Docker 以及 docker-compose 在服務器上部署 php 應用。

首先我們回顧一下過去的 nginx 里 php 配置:

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;
}

所有 php 文件使用 php 引擎來解析,php 運行在本地的 9000 端口(可以通過 ip/unix 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;
 }
}

于此同時,有個比較棘手的問題是,php 代碼在nginx 和 php 引擎都需要存在,不然解析不了,但這都不是事啊,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_name 來訪問 php-fpm
nginx 通過 volumes_from 指令共享了 php-fpm 的 /var/www/html
在 code 目錄下 index.php 里寫一下:

<?php
echo phpinfo();

然后運行:

# bash
docker-compose up

打開瀏覽器可以看到熟悉的 phpinfo 了:

PHP 應用容器化以及部署方法

那么問題來了,有小伙伴要問了,依賴怎么辦?好的,這就是我要繼續說的。

在你的項目里放一個 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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 未成年人在线观看 | 日韩精品一区二区三区中文 | 操操插插| 国产毛毛片一区二区三区四区 | 竹内纱里奈55在线观看 | 免费视频91 | 久草中文网| 91久久久久久久久久久久久久 | 欧美亚成人 | 欧美成视频在线观看 | 亚洲精品久久久久久久久久 | 成人在线观看免费观看 | 97色在线观看免费视频 | 成人国产精品一区二区毛片在线 | 亚洲射情| 二区三区四区视频 | 国产精品美女一区二区 | 耽美男男肉文 | 黑人一级片视频 | 91精品国产乱码久久久久 | 欧美成人精品欧美一级 | 久久色网站 | 国产亚洲精品久久久久婷婷瑜伽 | 亚洲特黄 | 国产一区视频在线免费观看 | 免费在线看黄 | 国产女做a爱免费视频 | 亚洲视屏在线 | 色网站在线免费观看 | 99爱福利视频在线观看 | 久久久久久久久久久影视 | 成人aaaaa片毛片按摩 | 91精品国产777在线观看 | 国产羞羞视频在线免费观看 | 日本一区二区三区四区高清视频 | 欧美一级片在线 | 欧美成年人在线视频 | 国产精品久久久不卡 | 爱操视频 | 欧美性生视频 | 大胆在线日本aⅴ免费视频 永久免费毛片 |