docker 搭建alpine下php多版本开发环境

docker 搭建alpine下php多版本开发环境

docker-compose.yml

version: "3.3"
services:
  mysql-8.0:
    container_name: fyl-mysql-8.0
    image: mysql:8.0
    restart: always
    ports:
      - "3306:3306"
    volumes:
      - ./etc/mysql/8.0/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro
      - ./var/log/mysql.8.0:/var/log/mysql:ro
      - ./var/lib/mysql/8.0:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      MYSQL_ROOT_PASSWORD: zengshun2021
  mysql-5.7:
    container_name: fyl-mysql-5.7
    image: mysql:5.7
    restart: always
    ports:
      - "3307:3306"
    volumes:
      - ./etc/mysql/5.7/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro
      - ./var/log/mysql/5.7:/var/log/mysql:ro
      - ./var/lib/mysql/5.7:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      MYSQL_ROOT_PASSWORD: zengshun2021
  redis-5.0:
    container_name: fyl-redis
    image: redis:5.0.7
    command: redis-server --requirepass zengshun2021
    #command: redis-server /usr/local/etc/redis/redis.conf
    restart: always
    ports:
      - "6379:6379"
    volumes:
      #- ./etc/redis/redis.conf:/usr/local/etc/redis/redis.conf
      - ./var/lib/redis/data:/data
      - /etc/localtime:/etc/localtime:ro
  php-5.6:
    container_name: fyl-php-5.6
    image: php:5.6-fpm-alpine
    build: ./dockerfiles/php/5.6-fpm
    restart: always
    ports:
      - "9001:9000"
    volumes:
      - ./etc/php/5.6:/usr/local/etc/php
      - ./var/www:/var/www/html
      - /etc/localtime:/etc/localtime:ro
    links:
      - "mysql-8.0"
  php-7.4:
    container_name: fyl-php-7.4
    image: php:7.4-fpm-alpine
    build: ./dockerfiles/php/7.4-fpm
    restart: always
    ports:
      - "9002:9000"
    volumes:
      - ./etc/php/7.4:/usr/local/etc/php
      - ./var/www:/var/www/html
      - /etcw/localtime:/etc/localtime:ro
    links:
      - "mysql-8.0"
  php-8.0:
    container_name: fyl-php-8.0
    image: php:8.0-fpm-alpine
    build: ./dockerfiles/php/8.0-fpm
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - ./etc/php/8.0:/usr/local/etc/php
      - ./var/www:/var/www/html
      - /etc/localtime:/etc/localtime:ro
    links:
      - "mysql-8.0"
  nginx-1.26.1:
    container_name: fyl-nginx
    image: nginx:1.26.1-alpine
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./etc/nginx/conf.d:/etc/nginx/conf.d:ro
      - ./etc/nginx/certs:/etc/nginx/certs
      - ./etc/nginx/.htpasswd:/etc/nginx/.htpasswd
      - ./var/log/nginx:/var/log/nginx
      - ./var/www:/usr/share/nginx/html
      - /etc/localtime:/etc/localtime:ro
    links:
      - "php-8.0"
      - "php-5.6"
      - "php-7.4"

php5.6 Dockerfile

FROM php:5.6-fpm-alpine
#安装php5.6的拓展
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk update\
&& apk add --no-cache libmcrypt-dev freetype-dev libjpeg-turbo-dev git libpng-dev \
# libfreetype6-dev \
# libjpeg62-turbo-dev \
&& docker-php-ext-install mcrypt mysqli pdo pdo_mysql mbstring bcmath zip opcache \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.13/community/ --allow-untrusted gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php

php7.4/8.0 Dockerfile

FROM php:7.4-fpm-alpine
# FROM php:8.0-fpm-alpine
#安装php7.4的拓展
RUN  sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk update \
&& apk add build-base autoconf bzip2-dev libxslt-dev freetype-dev libjpeg-turbo-dev libpng-dev zlib-dev libzip-dev icu-dev \
&& docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
&& docker-php-ext-install gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install opcache \
&& docker-php-ext-install bcmath \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install zip \
&& docker-php-ext-configure intl && docker-php-ext-install intl \
#&& pecl install redis-5.3.1 \
#&& docker-php-ext-enable redis \
&& apk del build-base

运行项目

# 构建并保持后台运行
sudo docker-compose up -d --build
# 不构建保持后台运行
sudo docker-compose up -d

部署文件夹目录

部署目录

更多

  1. 通过nginx配置文件中的fastcgi_pass php-8.0:9000切换不同的php版本。

  2. 或者可以添加一些hosts到系统里面,然后通过nginx配置多个站点同时访问不同版本的php。

    hosts文件地址:Linux & Mac 是在/etc/hosts, Windows是在C:\Windows\System32\drivers\etc.

    127.0.0.1 www.site1.com
    127.0.0.1 www.site2.com
    127.0.0.1 www.site3.com
    

部署文件合集

百度网盘

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值