使用Docker構建PHP開發環境

2021-09-03 01:21:39 字數 3285 閱讀 6457

php開發環境中的一些服務之間是需要通訊的,例如nginx和php-fpm,php和mysql,php和redis等都需要通訊,如果採用宿主機埠對映的方式可以滿足網路通訊但是效率和安全性都會減弱,所以可以使用docker的網路指令來構建乙個互通的網路,下面列出想用的網路命令。

建立網路

docker network create dev-net  --driver bridge

其中driver bridge是橋接模式

檢視網路

docker network ls

刪除網路

docker network rm 網路名稱

假設建立了乙個dev-net的網路,在使用docker run 建立容器的時候加上--network dev-net引數即可將容器加入此網路,加入到同一網路的服務是可以使用容器名稱進行通訊的,有了這層橋接網路php各個元件服務之間的通訊就很容易解決了,首先拉取映象

docker pull php:7.3-fpm

docker pull nginx

docker pull mysql:latest

docker pull redis:latest

假設開發者需要講**放置在/home/wwwroot/default/,首先需要執行mkdir -p /home/wwwroot/default/ 建立目錄

然後執行各個容器例如:

#第一次執行時需要設定mysql密碼

docker run --name mysql -e mysql_root_password=root -d --network dev-net mysql:latest \

--default-authentication-plugin=mysql_native_password

#nginx預設的web目錄是/usr/share/nginx/html 和宿主目錄 /home/wwwroot/default/做乙個對映關係

docker run -p 80:80 -v /home/wwwroot/default/:/usr/share/nginx/html \

--name nginx80 --network dev-net -d nginx:latest

#php中的目錄也做同樣的對映

docker run --name php-fpm --network dev-net -d \

-v /home/wwwroot/default/:/usr/share/nginx/html php:7.3-fpm

#執行redis

docker run -d --name redis --network dev-net redis:latest

容器啟動後需要配置nginx和php-fpm之間進行通訊

#從nginx容器拷貝配置檔案到宿主機的當前目錄

docker cp nginx80:/etc/nginx/conf.d/default.conf ./

#編輯配置檔案

vi default.conf

將nginx的配置檔案修改如下

location ~ \.php$
拷貝配置檔案到nginx容器內

docker cp ./default.conf nginx80:/etc/nginx/conf.d/default.conf
進入nginx容器內部重新載入nginx配置

docker exec -it nginx80 /bin/bash

#重新載入nginx配置

/usr/sbin/nginx -s reload

#退出容器

exit

在宿主機的/home/wwwroot/default/目錄建立php檔案然後測試訪問效果,可以看到php能夠正常解析

安裝對應的擴充套件

#進入php-fpm容器

docker exec -it php-fpm /bin/bash

#例如安裝pdo pdo_mysql等擴充套件

docker-php-ext-install pdo pdo_mysql mysqli

docker-php-ext-install redis

pecl install redis-4.2.0 && docker-php-ext-enable redis

安裝完擴充套件後需要重啟器容

docker restart php-fpm
環境搭建完畢後使用php連線mysql時會提示連線拒絕,可以通過修改mysql伺服器中mysql資料庫中的user表中的host欄位的值來實現

#進入mysql容器內

docker exec -it mysql /bin/bash

#登入mysql

mysql -uroot -proot

#進入資料庫

use mysql

#執行修改語句 語句中的php-fpm指的是php容器的名稱

update user set host='php-fpm' where user='root' and host='localhost';

flush privileges;

exit;

exit

設定完畢後再次測試,php可以連線到mysql伺服器了.

使用phpmyadmin操作容器內的mysql資料庫方法

wget
2.解壓

unzip phpmyadmin-4.8.4-all-languages.zip

#重新命名

mv phpmyadmin-4.8.4-all-languages phpmyadmin

3.修改配置

cd phpmyadmin

mv config.sample.inc.php config.inc.php

vi config.inc.php

將$cfg['servers'][$i]['host'] = 'localhost';修改為$cfg['servers'][$i]['host'] = 'mysql';

備註:$cfg['servers'][$i]['host'] = 'mysql'; 中的mysql指的是mysql容器的名稱

接下來可以使用瀏覽器訪問phpmyadmin並登陸mysql

使用Docker構建PyCharm開發環境

總結最近想用python開發乙個防火牆安全策略管理的軟體,如果直接安裝pycharm的開發環境,導致自己筆記本安裝的東西越來越多,造成混亂,因此花了幾天的時間構建了乙個pycharm的開發環境docker映象!1 我使用的作業系統為win10,已經安裝了docker for windows。現在do...

Docker構建開發環境

以往在新的機器上構建開發環境時,往往需要安裝比較多的工具軟體,這個過程比較耗時。有人會說,那可以把這些命令固化在shell指令碼中。當然這也是乙個可行的方法。隨著docker的發展,容器與容器雲大行其道。本著熟悉docker的想法,加之docker具有簡化配置 快速部署的特點,這裡嘗試使用docke...

Jenkins使用docker構建

jenkins master要將構建任務分配給docker,就必須在jenkins agent上安裝docker。建議給這些agent打上docker的標籤。在jenkins agent上安裝docker注意 要將 jenkins agent 的使用者加入docker的使用者組中,這樣jenkins...