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

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

docker-compose.yml

#version: "3.3"
services:
  mysql-8.0:
    container_name: ubuntu-mysql-8.0
    image: mysql:8.0
    restart: always
    ports:
      - "3309: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: ubuntu-mysql-5.7
    image: mysql:5.7
    restart: always
    ports:
      - "3310: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: ubuntu-redis
    image: redis:5.0
    command: redis-server --requirepass zengshun2021
    #command: redis-server /usr/local/etc/redis/redis.conf
    restart: always
    ports:
      - "6380: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: ubuntu-php-5.6
    #image: ubuntu-php:5.6
    build: ./dockerfiles/php/5.6-fpm
    restart: always
    ports:
      - "9003:9000"
    volumes:
      - ./etc/php/5.6/fpm:/etc/php/5.6/fpm:ro
      - ./var/www:/var/www/html
      - /etc/localtime:/etc/localtime:ro
    links:
      - "mysql-5.7"
  php-7.4:
    container_name: ubuntu-php-7.4
    #image: ubuntu-php:7.4
    build: ./dockerfiles/php/7.4-fpm
    restart: always
    ports:
      - "9004:9000"
    volumes:
      - ./etc/php/7.4/fpm:/etc/php/7.4/fpm:ro
      - ./var/www:/var/www/html
      - /etc/localtime:/etc/localtime:ro
    links:
      - "mysql-8.0"
  php-8.0:
    container_name: ubuntu-php-8.0
    #image: ubuntu-php:7.4
    build: ./dockerfiles/php/8.0-fpm
    restart: always
    ports:
      - "9005:9000"
    volumes:
      - ./etc/php/8.0/fpm:/etc/php/8.0/fpm:ro
      - ./var/www:/var/www/html
      - /etc/localtime:/etc/localtime:ro
    links:
      - "mysql-8.0"
  nginx-1.26.0:
    container_name: ubuntu-nginx
    #image: ubuntu-nginx:1.18.0
    build: ./dockerfiles/nginx/1.26.0
    restart: always
    ports:
      - "8099: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-5.6"
      - "php-7.4"
      - "php-8.0"

nginx1.26 Dockerfile

#指定基于的基础镜像
FROM ubuntu:22.04

#维护者信息
MAiNTAINER zengshun <15272782842@163.com>

#运行shell脚本或命令
RUN apt-get update && apt install -y curl gnupg2 ca-certificates lsb-release
RUN echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
RUN curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add - && apt-key fingerprint ABF5BD827BD9BF62 
RUN apt-get update && apt install -y nginx=1.26.0-1~jammy

#要与主机共享的目录。也可以在docker run 命令中使用 -v选项进行设置。例如,-v/root/data:/data将主>机的/root/data目录连接到Docker容器的/data目录。
#VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"]

#为CMD中设置的可执行文件设置运行目录。
#WORKDIR /etc/nginx

#与主机相连的端口号
#EXPOSE 80 443

#指定容器启动时执行的文件或shell脚本
CMD ["nginx", "-g", "daemon off;"]

php5.6 Dockerfile

#指定基于的基础镜像
FROM ubuntu:22.04

#维护者信息
MAiNTAINER zengshun <15272782842@163.com>

#运行shell脚本或命令
RUN apt-get update && apt-get install -y software-properties-common
RUN apt-get update && add-apt-repository ppa:ondrej/php
RUN apt-get update && apt-get install -y php5.6 php5.6-mcrypt php5.6-mbstring php5.6-curl php5.6-cli php5.6-mysql php5.6-gd php5.6-intl php5.6-xsl php5.6-zip php5.6-fpm
RUN sed -i 's@;daemonize = yes@daemonize = no@g' /etc/php/5.6/fpm/php-fpm.conf
RUN service php5.6-fpm start

#要与主机共享的目录。也可以在docker run 命令中使用 -v选项进行设置。例如,-v/root/data:/data将主>机的/root/data目录连接到Docker容器的/data目录。
#VOLUME ["/var/www/html"]

#为CMD中设置的可执行文件设置运行目录。
#WORKDIR /var/www/html

#与主机相连的端口号
#EXPOSE 9000

#指定容器启动时执行的文件或shell脚本
CMD ["/usr/sbin/php-fpm5.6", "-F"]

php7.4 Dockerfile

#指定基于的基础镜像
FROM ubuntu:22.04

#维护者信息
MAiNTAINER zengshun <15272782842@163.com>

#运行shell脚本或命令
RUN apt-get update && apt-get install -y software-properties-common
RUN apt-get update && add-apt-repository ppa:ondrej/php
RUN apt-get update && apt-get install -y php7.4 php7.4-mcrypt php7.4-mbstring php7.4-curl php7.4-cli php7.4-mysql php7.4-gd php7.4-intl php7.4-xsl php7.4-zip php7.4-fpm
RUN sed -i 's@;daemonize = yes@daemonize = no@g' /etc/php/7.4/fpm/php-fpm.conf
RUN service php7.4-fpm start

#要与主机共享的目录。也可以在docker run 命令中使用 -v选项进行设置。例如,-v/root/data:/data将主>机的/root/data目录连接到Docker容器的/data目录。
#VOLUME ["/var/www/html"]

#为CMD中设置的可执行文件设置运行目录。
#WORKDIR /var/www/html

#与主机相连的端口号
#EXPOSE 9000

#指定容器启动时执行的文件或shell脚本
CMD ["/usr/sbin/php-fpm7.4", "-F"]

php8.0 Dockerfile

#指定基于的基础镜像
FROM ubuntu:22.04

#维护者信息
MAiNTAINER zengshun <15272782842@163.com>

#运行shell脚本或命令
RUN apt-get update && apt-get install -y software-properties-common
RUN apt-get update && add-apt-repository ppa:ondrej/php
RUN apt-get update && apt-get install -y php8.0 php8.0-mcrypt php8.0-mbstring php8.0-curl php8.0-cli php8.0-mysql php8.0-gd php8.0-intl php8.0-xsl php8.0-zip php8.0-fpm
RUN sed -i 's@;daemonize = yes@daemonize = no@g' /etc/php/8.0/fpm/php-fpm.conf
RUN service php8.0-fpm start

#要与主机共享的目录。也可以在docker run 命令中使用 -v选项进行设置。例如,-v/root/data:/data将主>机的/root/data目录连接到Docker容器的/data目录。
#VOLUME ["/var/www/html"]

#为CMD中设置的可执行文件设置运行目录。
#WORKDIR /var/www/html

#与主机相连的端口号
#EXPOSE 9000

#指定容器启动时执行的文件或shell脚本
CMD ["/usr/sbin/php-fpm8.0", "-F"]

运行项目

# 构建并保持后台运行
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
    

部署文件合集

百度网盘

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值