加入收藏 | 设为首页 | 会员中心 | 我要投稿 吉安站长网 (https://www.0796zz.com.cn/)- 科技、图像处理、媒体智能、办公协同、操作系统!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-08-03 10:47:34 所属栏目:PHP教程 来源:互联网
导读:在本篇文章里小编给大家整理了关于docker-compose部署php项目的相关实例以及代码内容,有需要的朋友们可以学习参考下。 1.制定特定扩展的PHP镜像 sudo mkdir -p /www/docker sudo cd /www/docker sudo vi Dockerfile FROM php:7.2-fpm-alpine MAINTAINER dia
  在本篇文章里小编给大家整理了关于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);

(编辑:吉安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读