本次安装的推荐配置:
- 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
文章来源:https://www.toymoban.com/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
(踩坑经验:后面要带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 [临时容器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 [临时容器id]
docker rm [临时容器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转发,如3306,最好把nginx装在宿主机上!!!
下载镜像
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 [临时容器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 \
-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 [临时容器id]
docker rm [临时容器id]
例如,假设已启动的容器的名称为 "my-container",要将容器的 80 端口映射到宿主机的 8080 端口上,可以执行以下命令:
docker container update --publish-add 8080:80 my-container
修改这两个文件
五、安装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 [临时容器id]:/var/log /data/mysql5.7.43
docker cp [临时容器id]:/var/lib/mysql /data/mysql5.7.43/lib
docker cp [临时容器id]:/etc/mysql/conf.d /data/mysql5.7.43/conf
docker cp [临时容器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 [临时容器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;
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'root123456 ' WITH GRANT OPTION;
FLUSH PRIVILEGES;
使用远程工具连接mysql,并建立一个user用户表,后面用来测试
如果需要开启binlog日志
我一般不开启
六、运行php项目
将php项目通过ftp上传到 /data/nginx1.24.0/html (上面配置了这个地址会共享到容器内对应的文件夹)
新增一个网站配置
下图这样配置,带不带index.php都可以访问,上面那个带了访问不了。
hosts新增一行 (你的windows电脑)
重启docker
systemctl restart docker
在php项目中,新增一个访问数据库的代码
项目连接mysql
打开浏览器测试
安装redis
- –restart=always 总是开机启动
- –log是日志方面的
- -p 6379:6379 将6379端口挂载出去
- –name 给这个容器取一个名字
- -v 数据卷挂载
- /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
- /home/redis/myredis/data:/data 这个同上
- -d redis 表示后台启动redis
- redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
- –appendonly yes 开启redis 持久化
- –requirepass 000415 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置,我被搞过,可以看这篇文章“阿里云服务器中毒‘Kirito666’经历”)
都是踩坑经验,无私分享,有问题欢迎留言,共同进步!文章来源地址https://www.toymoban.com/news/detail-664709.html
到了这里,关于docker 搭建php环境(踩坑经验!!)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!