本次安裝的推薦配置:
- 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??
?文章來源:http://www.zghlxwxcb.cn/news/detail-664709.html
uname -r
查看版本要在3.10以上yum -y update
yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data Ivm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
systemctl start docker
systemctl enable docker
sudo mkdir -p /etc/docker
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
sudo systemctl restart docker
docker network create my_network
docker network ls
?
三、安裝php
下載php鏡像
docker pull php:7.4.3-fpm
?(踩坑經(jīng)驗(yàn):后面要帶fpm)
docker run -it --name test_php7.4.3-fpm -d php:7.4.3-fpm?
mkdir -p /data/php7.4.3 && cd /data/php7.4.3
?
docker cp [臨時(shí)容器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
docker stop [臨時(shí)容器id]
docker rm [臨時(shí)容器id]
php -m
docker-php-ext-install pdo pdo_mysql?
docker-php-ext-configure pcntl --enable-pcntl && docker-php-ext-install pcntl
docker-php-ext-install? bcmath
docker-php-ext-install gd
四、安裝nginx
理論:全部容器不做端口映射!!用nginx轉(zhuǎn)發(fā),如3306,最好把nginx裝在宿主機(jī)上!?。?/span>
下載鏡像
docker pull nginx:1.24.0
docker run -it --name test_nginx1.24.0 -d nginx:1.24.0
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 [臨時(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
docker run ?\
--network my_network ?\
-p 80:80 \
-p 443: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 \
-d nginx:1.24.0
docker stop [臨時(shí)容器id]
docker rm [臨時(shí)容器id]
例如,假設(shè)已啟動(dòng)的容器的名稱為 "my-container",要將容器的 80 端口映射到宿主機(jī)的 8080 端口上,可以執(zhí)行以下命令:
docker container update --publish-add 8080:80 my-container
?修改這兩個(gè)文件
五、安裝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/conf
?
?
docker cp [臨時(shí)容器id]:/var/log /data/mysql5.7.43
docker cp [臨時(shí)容器id]:/var/lib/mysql /data/mysql5.7.43/lib
docker cp [臨時(shí)容器id]:/etc/mysql/conf.d /data/mysql5.7.43/conf
docker cp [臨時(shí)容器id]:/etc/mysql/mysql.conf.d /data/mysql5.7.43/conf
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/mysql:/var/lib/mysql \
-v /data/mysql5.7.43/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=root123456 \
-d mysql:5.7.43
?docker stop [臨時(shí)容器id]
docker rm [臨時(shí)容器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;
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'root123456?' WITH GRANT OPTION;
FLUSH PRIVILEGES;
?
使用遠(yuǎn)程工具連接mysql,并建立一個(gè)user用戶表,后面用來測試
?
?如果需要開啟binlog日志
?
?我一般不開啟
?
?
?
六、運(yùn)行php項(xiàng)目
將php項(xiàng)目通過ftp上傳到??/data/nginx1.24.0/html (上面配置了這個(gè)地址會(huì)共享到容器內(nèi)對應(yīng)的文件夾)
?
?新增一個(gè)網(wǎng)站配置
?
下圖這樣配置,帶不帶index.php都可以訪問,上面那個(gè)帶了訪問不了。
?
?
hosts新增一行 (你的windows電腦)
?
重啟docker
systemctl restart docker
?
在php項(xiàng)目中,新增一個(gè)訪問數(shù)據(jù)庫的代碼
?項(xiàng)目連接mysql?
?
打開瀏覽器測試
?
安裝redis
- –restart=always 總是開機(jī)啟動(dòng)
- –log是日志方面的
- -p 6379:6379 將6379端口掛載出去
- –name 給這個(gè)容器取一個(gè)名字
- -v 數(shù)據(jù)卷掛載
- /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 這里是將 liunx 路徑下的myredis.conf 和redis下的redis.conf 掛載在一起。
- /home/redis/myredis/data:/data 這個(gè)同上
- -d redis 表示后臺(tái)啟動(dòng)redis
- redis-server /etc/redis/redis.conf 以配置文件啟動(dòng)redis,加載容器內(nèi)的conf文件,最終找到的是掛載的目錄 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
- –appendonly yes 開啟redis 持久化
- –requirepass 000415 設(shè)置密碼?(如果你是通過docker 容器內(nèi)部連接的話,就隨意,可設(shè)可不設(shè)。但是如果想向外開放的話,一定要設(shè)置,我被搞過,可以看這篇文章“阿里云服務(wù)器中毒‘Kirito666’經(jīng)歷”)
?
?
?
?
?
?
?
?
?
?都是踩坑經(jīng)驗(yàn),無私分享,有問題歡迎留言,共同進(jìn)步!文章來源地址http://www.zghlxwxcb.cn/news/detail-664709.html
到了這里,關(guān)于docker 搭建php環(huán)境(踩坑經(jīng)驗(yàn)!?。┑奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!