docker-compose部署php项目实例详解


Posted in PHP onJuly 30, 2019

1.制定特定扩展的PHP镜像

sudo mkdir -p /www/docker
sudo cd /www/docker
sudo vi Dockerfile
FROM php:7.2-fpm-alpine

MAINTAINER diaocheweide

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

RUN apk update && apk add --no-cache --virtual .build-deps \

    $PHPIZE_DEPS \

    curl-dev \

    imagemagick-dev \

    libtool \

    libxml2-dev \

    postgresql-dev \

    sqlite-dev \

    libmcrypt-dev \

    freetype-dev \

    libjpeg-turbo-dev \

    libpng-dev \

  && apk add --no-cache \

    curl \

    imagemagick \ mysql-client \

    postgresql-libs \

  && pecl install imagick \

  && pecl install mcrypt-1.0.1 \

  && docker-php-ext-install zip \

  && docker-php-ext-install pdo_mysql \

  && docker-php-ext-install opcache \

  && docker-php-ext-install mysqli \

  && docker-php-ext-enable mcrypt \

  && docker-php-ext-enable imagick \

  && docker-php-ext-install \

    curl \

    mbstring \

    pdo \

    pdo_mysql \

    pdo_pgsql \

    pdo_sqlite \

    pcntl \

    tokenizer \

    xml \

    zip \

    && docker-php-ext-install -j"$(getconf _NPROCESSORS_ONLN)" iconv \

  && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \

  && docker-php-ext-install -j"$(getconf _NPROCESSORS_ONLN)" gd \

  && pecl install -o -f redis \

  && rm -rf /tmp/pear \

  && docker-php-ext-enable redis \

  && rm -r /var/cache/apk/*

EXPOSE 9000

2.编写yml文件

sudo vi docker-compose.yml
version: '3.1'

services:

 nginx:

  image: nginx

  container_name: nginx

  restart: always

  ports:

   - "80:80"

   - "443:443"

  volumes:

   - /www/data/nginx/conf.d:/etc/nginx/conf.d

   - /www/default:/www/default

  networks:

   csl:

    ipv4_address: 172.18.0.2

 

 php:

  image: php:7.2-fpm-alpine-dcwd

  container_name: php7.2

  restart: always

  volumes:

   - /www/default:/www/default

  networks:

   csl:

    ipv4_address: 172.18.0.3 mysql5:

  image: mysql:5.7

  container_name: mysql5

  restart: always

  ports:

   - "3306:3306"

  environment:

   MYSQL_ROOT_PASSWORD: thisyourpassword

  volumes:

   - /www/data/mysql/mysql5:/var/lib/mysql #- /www/data/mysql/mysql5/conf/my.cnf:/etc/my.cnf

   #- /www/data/mysql/mysql5/init:/docker-entrypoint-initdb.d

  networks:

   csl:

    ipv4_address: 172.18.0.4 mysql8:

  image: mysql:8

  container_name: mysql8

  restart: always

  environment:

   MYSQL_ROOT_PASSWORD: thisyourpassword

  volumes:

   - /www/data/mysql/mysql8:/var/lib/mysql networks:

   csl:

    ipv4_address: 172.18.0.5

networks:

 csl:

  driver: bridge

  ipam:

   config:

    - subnet: 172.18.0.0/16

3.配置default.conf文件

sudo vi /www/data/nginx/default.conf
server {

  listen    80;

  server_name localhost;

  #charset koi8-r;

  #access_log /var/log/nginx/host.access.log main;

  location / {

    root  /www/default;

    index index.php index.html index.htm;

  }

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

  }

  # proxy the PHP scripts to Apache listening on 127.0.0.1:80

  #

  #location ~ \.php$ {

  #  proxy_pass  http://127.0.0.1;

  #}

  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

  #

  location ~ \.php$ {

    root      /www/default;

    fastcgi_pass  php7.2:9000;#php容器名或者php容器ip

    fastcgi_index index.php;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    include    fastcgi_params;

  }

  # deny access to .htaccess files, if Apache's document root

  # concurs with nginx's one

  #

  #location ~ /\.ht {

  #  deny all;

  #}

}

4.修改mysql允许远程连接并新建数据库

docker exec -it mysql5 bash

mysql -u root -p

use mysql;

update user set host='%' where user='root';

flush privileges;

5.创建并且启动容器

docker-compose up -d

6.新建index.php测试mysql连接

<?php

$con = mysqli_connect("172.18.0.4", "root", "thisyourpassword", "shop");

if ($con) {

  echo '连接 MYSQL 成功';

} else {

  echo "连接 MySQL 失败: " . mysqli_connect_error();

} mysqli_close($con);
PHP 相关文章推荐
我的论坛源代码(四)
Oct 09 PHP
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
PHP Smarty生成EXCEL文档的代码
Aug 23 PHP
修改PHP的memory_limit限制的方法分享
Feb 21 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php简单socket服务器客户端代码实例
May 18 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
php适配器模式简单应用示例
Oct 23 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 #PHP
laradock环境docker-compose操作详解
Jul 29 #PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 #PHP
PHP中散列密码的安全性分析
Jul 26 #PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 #PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 #PHP
php使用socket调用http和smtp协议实例小结
Jul 26 #PHP
You might like
php 文件状态缓存带来的问题
2008/12/14 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
使用Python在Windows下获取USB PID&amp;VID的方法
2019/07/02 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Python实现手绘图效果实例分享
2020/07/22 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
毕业自我鉴定
2013/11/05 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
出国留学经济担保书
2014/04/01 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
教师辞职书范文
2015/02/26 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS