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 相关文章推荐
基于PHP的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
php curl模拟post提交数据示例
Dec 31 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
Apr 01 PHP
ThinkPHP 3.2 数据分页代码分享
Oct 14 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
Jul 03 PHP
PHP异步进程助手async-helper
Feb 05 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 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实现json编码的方法
2015/07/30 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
CSS常用网站布局实例
2008/04/03 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
python学习之面向对象【入门初级篇】
2017/01/21 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
Python 如何对文件目录操作
2020/07/10 Python
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
银行服务感言
2014/03/01 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
小学生作文评语集锦
2014/12/25 职场文书