本次安裝的推薦配置: 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 ...
本次安裝的推薦配置:
- 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
uname -r
查看版本要在3.10以上
更新系統組件 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
啟動docker
systemctl start docker
設置開機啟動
systemctl enable docker
設置鏡像國內加速(踩坑經驗:設置多個源頭,不然會很慢)
創建文件
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
設置容器區域網,容器間相互訪問 (心得:容器互相訪問,不用通過宿主機,更快)
docker network create my_network
查看區域網是否創建成功
docker network ls
三、安裝php
下載php鏡像
docker pull php:7.4.3-fpm
(踩坑經驗:後面要帶fpm)
使用鏡像生成臨時容器 ,名為:test_php7.4.3,用來拷貝配置文件(踩坑經驗:空文件夾做共用,會將容器的配置文件清空)
docker run -it --name test_php7.4.3-fpm -d php:7.4.3-fpm
使用 docker ps 命令查看是否創建成功
創建需要被共用的文件夾
mkdir -p /data/php7.4.3 && cd /data/php7.4.3
將鏡像內文件拷貝出來 (左邊是容器,會連同文件夾一起複制過去,右邊是放進哪個文件夾里)
docker cp [臨時容器id]:/usr/local/etc /data/php7.4.3
啟動正式容器
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 重啟自動啟動容器
沒問題後,停止臨時鏡像,並刪除臨時鏡像
docker stop [臨時容器id]
docker rm [臨時容器id]
php開通 mysql pdo 擴展,php連接mysql會用到
進入php容器後
查看php擴展模塊
php -m
安裝擴展
docker-php-ext-install pdo pdo_mysql
四、安裝nginx
下載鏡像
docker pull nginx:1.24.0
鏡像生成臨時容器(用來拷貝配置文件)
docker run -it --name test_nginx1.24.0 -d nginx:1.24.0
使用docker ps 查詢是否啟動成功
創建需要被共用的文件夾
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
將鏡像內文件拷貝出來 (左邊是容器,會連同文件夾一起複制過去,右邊是放進哪個文件夾里)
docker cp [臨時容器id]:/etc/nginx/conf.d /data/nginx1.24.0/conf
docker cp [臨時容器id]:/etc/nginx/nginx.conf /data/nginx1.24.0/conf/nginx.conf
docker cp [臨時容器id]:/usr/share/nginx/html /data/nginx1.24.0
啟動正式容器
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 重啟自動啟動容器
沒問題後,停止臨時鏡像,並刪除臨時鏡像
docker stop [臨時容器id]
docker rm [臨時容器id]
五、安裝mysql
下載鏡像docker pull mysql:5.7.43
開啟臨時鏡像(用來拷貝配置文件)
docker run -it --name test_mysql5.7.43 -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime:ro -d mysql:5.7.43
創建需要被共用的文件夾
mkdir -p /data/mysql5.7.43
將鏡像內文件拷貝出來 (左邊是容器,會連同文件夾一起複制過去,右邊是放進哪個文件夾里)
docker cp [臨時容器id]:/var/log /data/mysql5.7.43
docker cp [臨時容器id]:/var/lib /data/mysql5.7.43
docker cp [臨時容器id]:/etc/mysql/conf.d /data/mysql5.7.43
docker cp [臨時容器id]:/etc/mysql/mysql.conf.d /data/mysql5.7.43
啟動正式容器
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 重啟自動啟動容器
沒問題後,停止臨時鏡像,並刪除臨時鏡像
docker stop [臨時容器id]
docker rm [臨時容器id]
# 進入容器
docker exec -it [容器id] bash
# 創建用戶並開啟遠程登錄
CREATE USER 'user_tp'@'%' IDENTIFIED BY 'user_tp_123456';
# 創建資料庫並設置字元集
CREATE DATABASE `tp_test` CHARACTER SET 'utf8mb4';
# 給賬號授權資料庫
GRANT ALL PRIVILEGES ON `tp_test`.* TO 'user_tp'@'%';
# 刷新許可權
FLUSH PRIVILEGES;
使用遠程工具連接mysql,並建立一個user用戶表,後面用來測試
六、運行php項目
將php項目通過ftp上傳到 /data/nginx1.24.0/html (上面配置了這個地址會共用到容器內對應的文件夾)
新增一個網站配置
hosts新增一行 (你的windows電腦)
重啟docker
systemctl restart docker
在php項目中,新增一個訪問資料庫的代碼
項目連接mysql
打開瀏覽器測試
都是踩坑經驗,無私分享,有問題歡迎留言,共同進步!