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

 更新时间:2019年07月30日 14:49:53   作者:JingbangLiang   我要评论
在本篇文章里小编给大家整理了关于docker-compose部署php项目的相关实例以及代码内容,有需要的朋友们可以学习参考下。

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

相关文章

  • 调用WordPress函数文章访问量及PHP原生计数器的实现

    调用WordPress函数文章访问量及PHP原生计数器的实现

    这篇文章主要介绍了调用WordPress函数文章访问量及PHP原生计数器的实现,文中作者也提到了WordPress中的两款插件不过出于性能考虑并不推荐插件方式的实现,需要的朋友可以参考下
    2016-03-03
  • Zend Framework入门教程之Zend_View组件用法示例

    Zend Framework入门教程之Zend_View组件用法示例

    这篇文章主要介绍了Zend Framework中Zend_View组件用法,结合实例形式简单分析了Zend_View组件视图操作的相关技巧与注意事项,需要的朋友可以参考下
    2016-12-12
  • CodeIgniter常用知识点小结

    CodeIgniter常用知识点小结

    这篇文章主要介绍了CodeIgniter常用知识点,包括跳转、常量定义、语言设置及支持get方法传参等技巧,需要的朋友可以参考下
    2016-05-05
  • PHP使用SWOOLE扩展实现定时同步 MySQL 数据

    PHP使用SWOOLE扩展实现定时同步 MySQL 数据

    本文给大家介绍的是一次比较特殊的任务,我们使用PHP SWOOLE 做一个异步的定时任务系统,具体如何来实现的呢,接下来来我们好好看下吧
    2017-04-04
  • ci检测是ajax还是页面post提交数据的方法

    ci检测是ajax还是页面post提交数据的方法

    这篇文章主要介绍了ci检测是ajax还是页面post提交数据的方法,以PHP的环境变量为基础实例展示了针对CI框架配置文件的修改技巧,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • Laravel框架金沙国际官网CURD操作、连贯操作总结

    Laravel框架金沙国际官网CURD操作、连贯操作总结

    这篇文章主要介绍了Laravel框架金沙国际官网CURD操作、连贯操作、链式操作总结,本文包含大量金沙国际官网操作常用方法,需要的朋友可以参考下
    2014-09-09
  • PHP两个n位的二进制整数相加问题的解决

    PHP两个n位的二进制整数相加问题的解决

    这篇文章主要为大家详细介绍了PHP两个n位的二进制整数相加问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 基于php的微信公众平台开发入门实例

    基于php的微信公众平台开发入门实例

    这篇文章主要介绍了基于php的微信公众平台开发入门,实例分析了微信公众平台从注册、配置方法及接口代码的实现技巧,深入浅出,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • PHP实现微信退款功能

    PHP实现微信退款功能

    这篇文章主要为大家详细介绍了PHP实现微信退款功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • CI框架中libraries,helpers,hooks文件夹详细说明

    CI框架中libraries,helpers,hooks文件夹详细说明

    CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。今天我们来看看CI框架中几个文件夹都是干什么用的
    2014-06-06

最新评论