前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker-compose PHP8.0 Redis5.0 Mysql8.0 Nginx 环境脚手架

Docker-compose PHP8.0 Redis5.0 Mysql8.0 Nginx 环境脚手架

作者头像
躺平程序员老修
发布2023-09-05 16:12:33
4490
发布2023-09-05 16:12:33
举报

PHP DockerFile

mcrypt扩展费了一些时间,php自己的bug,pecl上写着8.0支持1.0.3版本,可惜。 具体参考 https://bugs.php.net/bug.php?id=80459 需要其他扩展的参照下面方式,注意是源码安装还是pecl安装即可

代码语言:javascript
复制
FROM php:8.0-fpm-buster

# 更换源
RUN sed -i "s/deb.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list 

RUN apt-get update && apt-get install -y \
    libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev \
    && apt-get install -y libmemcached-dev zlib1g-dev \

    && docker-php-ext-install -j$(nproc) iconv \

    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd \

    # PHP8必须装1.0.4  参考 https://bugs.php.net/bug.php?id=80459
    && pecl install mcrypt-1.0.4 \
    && docker-php-ext-enable mcrypt \

    && docker-php-ext-install mysqli \
    && docker-php-ext-install pdo pdo_mysql \

    && pecl install redis-5.3.2 \
    && docker-php-ext-enable redis \

    && docker-php-ext-install -j$(nproc) bcmath

docker-compose.yml

这里值得注意的地方是:

  • mysql的配置文件现在被注释了,windows环境(听说也包括mac)挂载my.cnf会有权限问题,解决办法也有,个人感觉不够规范,就先注释了,一般线上都会在linux部署的吧。
  • www目录要同时挂载php和nginx,方便有一些脚本的运行,比如laravel的php artisan。
  • 自己修改nginx/conf中的vhost配置,参考fmock.conf即可,项目解析目录是./www : /data/www
代码语言:javascript
复制
version: "3"
services:
  mysql:
    container_name: dlnmpr-mysql
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_USER=litblc
      - MYSQL_PASSWORD=EGzsj2021^^
    ports:
      - "13306:3306"
    expose:
      - "3306"
    restart: always
    volumes:
      - ./docker/mysql/data/:/var/lib/mysql
      #- ./docker/mysql/etc/my.cnf:/etc/mysql/my.cnf
    networks:
      - lnmp

  redis:
    container_name: dlnmpr-redis
    image: redis:5.0
    ports:
      - "16379:6379"
    expose:
      - "6379"
    volumes:
      - ./docker/redis/etc/6379.conf:/usr/local/etc/redis/redis.conf
      - ./docker/redis/data:/data
      - ./docker/redis/log:/logs
    restart: always #重启
    networks:
      - lnmp

  php:
    container_name: dlnmpr-php
    build:
      context: ./docker/php
      dockerfile: Dockerfile
    expose:
      - "9000"
    environment:
      - TZ=Asia/Shanghai      
    links:
      - mysql
      - redis
    restart: always
    networks:
      - lnmp
    volumes:
      - ./docker/php/etc/php.ini:/usr/local/etc/php/php.ini
      - ./docker/php/etc/php-fpm.conf:/usr/local/etc/php-fpm.conf
      - ./docker/php/etc/php-fpm.d/www.conf:/usr/local/etc/php-fpm.d/www.conf
      - ./docker/php/logs/:/var/log/php
      - ./www:/data/www

  nginx:
    container_name: dlnmpr-nginx
    image: nginx:1.21
    volumes:
      - ./docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/conf.d/:/etc/nginx/conf.d/
      - ./docker/nginx/html:/usr/share/nginx/html
      - ./docker/nginx/log/:/var/log/nginx
      - ./www:/data/www
    ports:
      - "9527:80"
      - "9443:443"
    environment:
      - TZ=Asia/Shanghai
    restart: always
    links:
      - php
    depends_on:
      - mysql
      - redis
      - php
    networks:
      - lnmp

networks:
  lnmp:
    driver: bridge

phpinfo

QQ截图20210528154124.jpg
QQ截图20210528154124.jpg

完整脚手架地址

github :https://github.com/ShyZhen/dockerLnmpr

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP DockerFile
  • docker-compose.yml
  • phpinfo
  • 完整脚手架地址
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档