docker 搭建php环境(踩坑经验!!)

2023年 8月 23日 35.5k 0

 

三、安装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 

 

打开浏览器测试

 

 都是踩坑经验,无私分享,有问题欢迎留言,共同进步!

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论