docker?中搭建php環(huán)境經(jīng)驗(yàn)分享
本次安裝的推薦配置:
- CentOS 7 (迅雷種子 http://ftp.nara.wide.ad.jp/pub/Linux/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.torrent)
- nginx 1.24.0
- mysql 5.7.43
- php 7.4.3-fpm
- redis 7.2.0
一、虛擬機(jī)安裝centos7
vm虛擬機(jī)需要4g內(nèi)存,網(wǎng)絡(luò)使用nat模式設(shè)置靜態(tài)ip、50G硬盤(pán)、1cpu、2核(踩坑經(jīng)驗(yàn):太低配置重啟后會(huì)開(kāi)不了機(jī))
開(kāi)機(jī)后
uname -r
查看版本要在3.10以上
更新系統(tǒng)組件 yum -y update
二、安裝docker
刪除舊docker
yum remove docker docker-common docker-selinux docker-engine
安裝工具
yum install -y yum-utils device-mapper-persistent-data Ivm2
配置docker的yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安裝docker
sudo yum install -y docker-ce
啟動(dòng)docker
systemctl start docker
設(shè)置開(kāi)機(jī)啟動(dòng)
systemctl enable docker
設(shè)置鏡像國(guó)內(nèi)加速(踩坑經(jīng)驗(yàn):設(shè)置多個(gè)源頭,不然會(huì)很慢)
創(chuàng)建文件
sudo mkdir -p /etc/docker
輸入源頭url
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://mirror.ccs.tencentyun.com", "https://docker.mirrors.ustc.edu.cn/", "https://hub-mirror.c.163.com/", "https://reg-mirror.qiniu.com/" ] } EOF
重啟配置
sudo systemctl daemon-reload
重啟docker
sudo systemctl restart docker
設(shè)置容器局域網(wǎng),容器間相互訪問(wèn) (心得:容器互相訪問(wèn),不用通過(guò)宿主機(jī),更快)
docker network create my_network
查看局域網(wǎng)是否創(chuàng)建成功
docker network ls
三、安裝php
下載php鏡像
docker pull php:7.4.3-fpm
(踩坑經(jīng)驗(yàn):后面要帶fpm)
使用鏡像生成臨時(shí)容器 ,名為:test_php7.4.3,用來(lái)拷貝配置文件(踩坑經(jīng)驗(yàn):空文件夾做共享,會(huì)將容器的配置文件清空)
docker run -it --name test_php7.4.3-fpm -d php:7.4.3-fpm
使用 docker ps 命令查看是否創(chuàng)建成功
創(chuàng)建需要被共享的文件夾
mkdir -p /data/php7.4.3 && cd /data/php7.4.3
將鏡像內(nèi)文件拷貝出來(lái)
(左邊是容器,會(huì)連同文件夾一起復(fù)制過(guò)去,右邊是放進(jìn)哪個(gè)文件夾里)
docker cp [臨時(shí)容器id]:/usr/local/etc /data/php7.4.3
啟動(dòng)正式容器
docker run ?\ --network my_network ?\ --name prod_7.4.3-fpm ?\ --restart=always ?\ -v /data/php7.4.3/etc:/usr/local/etc \ -v /data/nginx1.24.0/html:/var/www/html \ -d php:7.4.3-fpm
備注:--restart=always 重啟自動(dòng)啟動(dòng)容器
沒(méi)問(wèn)題后,停止臨時(shí)鏡像,并刪除臨時(shí)鏡像
docker stop [臨時(shí)容器id]
docker rm [臨時(shí)容器id]
php開(kāi)通 mysql pdo 擴(kuò)展,php連接mysql會(huì)用到
進(jìn)入php容器后
查看php擴(kuò)展模塊
php -m
安裝擴(kuò)展
docker-php-ext-install pdo pdo_mysql
四、安裝nginx
下載鏡像
docker pull nginx:1.24.0
鏡像生成臨時(shí)容器(用來(lái)拷貝配置文件)
docker run -it --name test_nginx1.24.0 -d nginx:1.24.0
使用docker ps 查詢是否啟動(dòng)成功
創(chuàng)建需要被共享的文件夾
mkdir -p /data/nginx1.24.0/conf/cert mkdir -p /data/nginx1.24.0/conf/conf.d mkdir -p /data/nginx1.24.0/html mkdir -p /data/nginx1.24.0/log mkdir -p /data/nginx1.24.0/ssl
將鏡像內(nèi)文件拷貝出來(lái)
(左邊是容器,會(huì)連同文件夾一起復(fù)制過(guò)去,右邊是放進(jìn)哪個(gè)文件夾里)
docker cp [臨時(shí)容器id]:/etc/nginx/conf.d ?/data/nginx1.24.0/conf docker cp [臨時(shí)容器id]:/etc/nginx/nginx.conf /data/nginx1.24.0/conf/nginx.conf docker cp [臨時(shí)容器id]:/usr/share/nginx/html /data/nginx1.24.0
啟動(dòng)正式容器
docker run ?\ --network my_network ?\ -p 80:80 ?\ -p443:443 ?\ --name prod_nginx1.24.0 ?\ --restart=always ?\ -v /data/nginx1.24.0/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /data/nginx1.24.0/conf/cert:/etc/nginx/cert \ -v /data/nginx1.24.0/ssl:/etc/nginx/ssl/ ?\ -v /data/nginx1.24.0/conf/conf.d:/etc/nginx/conf.d \ -v /data/nginx1.24.0/log:/var/log/nginx \ -v /data/nginx1.24.0/html:/usr/share/nginx/html \ -d nginx:1.24.0
備注:--restart=always 重啟自動(dòng)啟動(dòng)容器
沒(méi)問(wèn)題后,停止臨時(shí)鏡像,并刪除臨時(shí)鏡像
docker stop [臨時(shí)容器id]
docker rm [臨時(shí)容器id]
五、安裝mysql
下載鏡像
docker pull mysql:5.7.43
開(kāi)啟臨時(shí)鏡像(用來(lái)拷貝配置文件)
docker run -it --name test_mysql5.7.43 -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime:ro -d mysql:5.7.43
創(chuàng)建需要被共享的文件夾
mkdir -p /data/mysql5.7.43
將鏡像內(nèi)文件拷貝出來(lái)
(左邊是容器,會(huì)連同文件夾一起復(fù)制過(guò)去,右邊是放進(jìn)哪個(gè)文件夾里)
docker cp [臨時(shí)容器id]:/var/log /data/mysql5.7.43 docker cp [臨時(shí)容器id]:/var/lib /data/mysql5.7.43 docker cp [臨時(shí)容器id]:/etc/mysql/conf.d /data/mysql5.7.43 docker cp [臨時(shí)容器id]:/etc/mysql/mysql.conf.d /data/mysql5.7.43
啟動(dòng)正式容器
docker run ?\ --network my_network ?\ --name prod_mysql5.7.43 ?\ --restart=always ?\ -p 3306:3306 ?\ -v /data/mysql5.7.43/log:/var/log \ -v /data/mysql5.7.43/lib:/var/lib \ -v /data/mysql5.7.43/conf.d:/etc/mysql/conf.d \ -v /data/mysql5.7.43/mysql.conf.d:/etc/mysql/mysql.conf.d \ -v /etc/localtime:/etc/localtime:ro \ -e MYSQL_ROOT_PASSWORD=root123456 \ -d mysql:5.7.43
備注:--restart=always 重啟自動(dòng)啟動(dòng)容器
沒(méi)問(wèn)題后,停止臨時(shí)鏡像,并刪除臨時(shí)鏡像
docker stop [臨時(shí)容器id]
docker rm [臨時(shí)容器id]
# 進(jìn)入容器
docker exec -it [容器id] bash
# 創(chuàng)建用戶并開(kāi)啟遠(yuǎn)程登錄
CREATE USER 'user_tp'@'%' IDENTIFIED BY 'user_tp_123456';
# 創(chuàng)建數(shù)據(jù)庫(kù)并設(shè)置字符集
CREATE DATABASE `tp_test` CHARACTER SET 'utf8mb4';
# 給賬號(hào)授權(quán)數(shù)據(jù)庫(kù)
GRANT ALL PRIVILEGES ON `tp_test`.* TO 'user_tp'@'%';
# 刷新權(quán)限
FLUSH PRIVILEGES;
使用遠(yuǎn)程工具連接mysql,并建立一個(gè)user用戶表,后面用來(lái)測(cè)試
六、運(yùn)行php項(xiàng)目
將php項(xiàng)目通過(guò)ftp上傳到 /data/nginx1.24.0/html (上面配置了這個(gè)地址會(huì)共享到容器內(nèi)對(duì)應(yīng)的文件夾)
新增一個(gè)網(wǎng)站配置
hosts新增一行 (你的windows電腦)
重啟docker
systemctl restart docker
在php項(xiàng)目中,新增一個(gè)訪問(wèn)數(shù)據(jù)庫(kù)的代碼
項(xiàng)目連接mysql
打開(kāi)瀏覽器測(cè)試
都是踩坑經(jīng)驗(yàn),無(wú)私分享,有問(wèn)題歡迎留言,共同進(jìn)步!
到此這篇關(guān)于docker 中搭建php環(huán)境經(jīng)驗(yàn)分享的文章就介紹到這了,更多相關(guān)docker 搭建php環(huán)境內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 利用docker搭建php7和nginx運(yùn)行環(huán)境全過(guò)程(官方鏡像)
- 搭建基于Docker的PHP開(kāi)發(fā)環(huán)境的詳細(xì)教程
- Docker搭建 Nginx+PHP+MySQL 環(huán)境并部署WordPress實(shí)踐
- 利用Docker制作Nginx+PHP鏡像的步驟詳解
- docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法
- Docker 如何布置PHP開(kāi)發(fā)環(huán)境
- 基于Docker的PHP調(diào)用基于Docker的Mysql數(shù)據(jù)庫(kù)
- docker完整配置nginx+php+mysql的方法步驟
- 詳解Docker創(chuàng)建php開(kāi)發(fā)環(huán)境遇到的權(quán)限問(wèn)題解決方案
- Docker搭建自己的PHP開(kāi)發(fā)環(huán)境
相關(guān)文章
php訪問(wèn)數(shù)組最后一個(gè)元素的函數(shù)end()用法
這篇文章主要介紹了php訪問(wèn)數(shù)組最后一個(gè)元素的函數(shù)end()用法,實(shí)例分析了php中end函數(shù)訪問(wèn)數(shù)組元素的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03PHP imagecreatefrombmp 從BMP文件或URL新建一圖像
大家都知道php GD庫(kù)可方便的從URL新建一圖像, GD中有imagecreatefromjpeg(),imagecreatefromPNG()....等2012-07-07在PHP中利用wsdl創(chuàng)建標(biāo)準(zhǔn)webservice的實(shí)現(xiàn)代碼
網(wǎng)上有現(xiàn)成的nusoap,我沒(méi)使用,如果使用了,我可能就不知道PHP是怎么創(chuàng)建webservice的了2011-12-12php通過(guò)文件頭檢測(cè)文件類型通用代碼類(zip,rar等)
在做web應(yīng)用時(shí)候,通過(guò)web擴(kuò)展名判斷上存文件類型,這個(gè)是我們常使用的。2010-10-10php中禁止單個(gè)IP與ip段訪問(wèn)的代碼小結(jié)
今天網(wǎng)上有人問(wèn)我php中如何禁用ip訪問(wèn),通過(guò)測(cè)試發(fā)現(xiàn)如下的代碼不錯(cuò),原理也比較簡(jiǎn)單2012-07-07php找出指定范圍內(nèi)回文數(shù)且平方根也是回文數(shù)的方法
這篇文章主要介紹了php找出指定范圍內(nèi)回文數(shù)且平方根也是回文數(shù)的方法,實(shí)例分析了php判斷回文的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03