Laradock php mysql 安裝多版本

Wsmallnews發表於2022-02-23

安裝 php 多版本

第一步複製 php-fpm 放到 php-fpm 的下面,修改如下

## php-fpm 7.0 
php-fpm70:      # 修改名字為 php-fpm70
  build:
    context: ./php-fpm
    args:
      # ...
      - LARADOCK_PHP_VERSION=7.0    # 直接寫死版本號,或者 .env再加一個變數
      # ...
  volumes:
    # ...
    - ./php-fpm/php7.0.ini:/usr/local/etc/php/php.ini   # 使用 7.0 的配置檔案
    # ...

第二步修改 site 配置檔案

  • 方法一,修改站點配置檔案
fastcgi_pass php-upstream;
替換為
fastcgi_pass php-fpm70:9000;
  • 方法二
nginx Dockerfile 檔案修改
在這句下面
ARG PHP_UPSTREAM_CONTAINER=php-fpm
增加 php-fpm70 的變數
ARG PHP70_UPSTREAM_CONTAINER=php-fpm70
在這句下面
# Set upstream conf and remove the default conf
RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf \
    && rm /etc/nginx/conf.d/default.conf
增加 php-fpm70
# 寫入 php-fpm70
RUN echo "upstream php70-upstream { server ${PHP70_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" >> /etc/nginx/conf.d/upstream.conf
然後將站點配置檔案修改為
fastcgi_pass php-upstream;
替換為
fastcgi_pass php70-upstream;

第三步,自動跟隨啟動

docker-compose  nginx 模組
depends_on:
    - php-fpm
    - php-fpm70     # 增加 php-fpm70

安裝 mysql 多版本

這裡假設 latest 對應的是 8.0,現在要安裝 5.7

複製 docker-compose.yml 中 mysql 容器程式碼放到 mysql 的下面,修改如下

### MySQL5.7 ################################################
    mysql57:        # 容器名字就叫 mysql57
      build:
        context: ./mysql
        args:
          - MYSQL_VERSION=5.7       # 這裡直接寫死版本號
      environment:
        - MYSQL_DATABASE=${MYSQL_DATABASE}
        - MYSQL_USER=${MYSQL_USER}
        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
        - TZ=${WORKSPACE_TIMEZONE}
      volumes:
        - ${DATA_PATH_HOST}/mysql57:/var/lib/mysql      # 這裡要把mysql 資料目錄改一下名字,改為mysql57,否則會和預設版本衝突提示無法寫入檔案
        - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
      ports:
        - "3307:3307"   # 這裡將埠對映到主機 3307 埠,並且內部也是用 3307(這樣本地和程式中都使用同一個 3307), 本地埠:容器埠
      networks:
        - backend

啟動

docker-compose up -d mysql57

可以將 mysql57 新增為 mysql 的依賴項,這樣當啟動 mysql 時,也會自動把 mysql57 啟動

在 mysql 模組的 ports 下面追加

    depends_on:
        - mysql57

這樣如下命令,將同時啟動 mysql 和 mysql57

docker-compose up -d mysql
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章