日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

用Docker打造多版本PHP运行环境

發布時間:2025/3/18 php 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Docker打造多版本PHP运行环境 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

背景

隨著Docker的不斷成熟,越來越多的站長以及運維人員選擇Docker構建程序運行環境,另外由于國內的云服務廠商通常在新購主機時會給較大的優惠,而續費則優惠很少,本著盡量節省成本的原則,借助Docker自動構建運行環境,成為一個比較好的選擇。本文針對的場景是一臺云主機上運行多個版本的PHP的情況,LNMP架構。

宿主機配置

這里把運行Docker服務的服務器叫宿主機,目前Docker對于宿主機的系統是有要求的,簡單來說,Centos 需要7以上,Ubuntu需要16以上。所以在購買或者升級云主機的系統時,需要注意系統的版本,通常選最新的版本是沒錯的,除非有特殊的需求。接下去以Centos為例,安裝Docker的步驟如下:

  • 刪除舊版本
  • sudo yum remove docker \docker-common \docker-selinux \docker-engine
  • 安裝對應的包
  • sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
  • 只選擇穩定版本的包
  • sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
  • 安裝 Docker (這里選擇的社區版本,有錢的可以選擇企業版)
  • sudo yum install docker-ce
  • 啟動Docker
  • sudo systemctl start docker
  • 測試Docker
  • sudo docker run hello-world

    這個命令將拉去hello-world鏡像并運行,將輸出hello world消息 7. 讓Docker隨系統啟動

    sudo systemctl enable docker
  • 安裝Docker compose
  • sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
  • 使用國內鏡像 因為你懂得原因,直接從docker官方倉拉取鏡像會很慢,經常失敗,所以需要使用墻內鏡像。以阿里云docker鏡像為例,首先去注冊一個阿里云帳戶,然后登陸,找到容器鏡像服務,找不到的話可以訪問這個地址(地址可能會失效) 阿里云容器鏡像服務 在鏡像加速器菜單,可以看到專屬加速地址,拷貝這個地址,然后使用以下命令:
  • sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' {"registry-mirrors": ["您的專屬加速地址"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

    至此,宿主機算配置完畢啦。

    編寫docker-composer.yml

    docker composer 適合單主機的情況下進行多容器編排,代碼已經全部放到馬云了。 地址:https://gitee.com/linwx/Docker-LNMP

    幾個關鍵點

    PHP版本指定

    不同版本的PHP,用不同的服務名來標志,如php-fpm,和php54-fpm. 然后在nginx里連接的時候,指定相應的名字:

    links:- php-fpm:fpm- php54-fpm:fpm54

    在相應的配置文件中,如site1站點是運行在PHP7版本的,對應的fastcgi_pass參數是fpm:9000:

    location ~ \.php$ {fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_pass fpm:9000;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_intercept_errors off;fastcgi_buffer_size 16k;fastcgi_buffers 4 16k;}

    site2站點是運行在PHP5.4版本上的,對應的fastcgi_pass參數是fpm54:9000:

    location ~ \.php$ {root /var/www/html/bbs;fastcgi_pass fpm54:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;fastcgi_read_timeout 600;}

    容器的時間

    涉及到時間和日期的操作,需要關注容器的默認時區,比如nginx的日志輸出的時間,php的計劃任務運行的時間,因此需要在容器編譯的時候,就指定好默認的時區,在nginx和cron的dockerfile里可以看到對應的命令:

    RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    cron容器

    本著每個容器運行一個服務的原則,本文把cron服務也單獨成一個容器,為了讓cron容器正常運行,需要注意2點,一是容器的時區,上文已經提過;二是計劃任務的列表,需要讓在編譯的時候寫入,相應的dockerfile如下:

    ADD crontab /etc/cron.d/cron RUN chmod 0644 /etc/cron.d/cron RUN crontab /etc/cron.d/cron CMD ["cron", "-f"]

    使用cron -f 命令,讓cron保持在前臺運行

    快速使用

    如果不想了解那么多細節,可以在配置完宿主機后,直接git clone https://gitee.com/linwx/Docker-LNMP.git 然后配置相應的站點nginx配置文件,就可以使用docker-compose up -d --build啟動所有服務啦。

    轉載于:https://my.oschina.net/u/248080/blog/1622690

    總結

    以上是生活随笔為你收集整理的用Docker打造多版本PHP运行环境的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。