Docker搭建PHP环境(PHP+Nginx+Mysql+Redis+Swoole)

发布于 2022-09-23  849 次阅读


目标:使用Docker、Docker Hub、PHP、Nginx、Mysql、Redis、Swoole搭建WordPress博客网站。

1.准备工作

在DokcerHub准备Docker镜像,镜像是为了Docker创建容器


# 在DockerHub拉取Nginx镜像
docker pull nginx


# 在DockerHub拉取PHP7.4-fpm镜像
docker pull php:7.4-fpm


# 在DockerHub拉取Mysql镜像
docker pull mysql

2.简单介绍

--name 自定义容器名称

-p 将容器内部使用的网络端口映射到宿主机上(宿主机端口:容器端口)

-d 让容器后台运行

-v 将容器内部目录和宿主机目录相互映射,(宿主机目录:容器目录)

docker-php-ext-install 安装php扩展


3.创建Mysql容器

mysql:8.0.29是镜像名称

PS:Password改成自己的Mysql密码


# 构建Mysql容器
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Password -d -v /work/mysql:/var/lib/mysql mysql:8.0.29

4.创建PHP容器


docker run --name php7.4 -p 9000:9000 -d \
-v /project:/project \
php:7.4-fpm

PHP安装自带的扩展


# 安装mysqli扩展
docker-php-ext-install mysqli


# 安装pdo_mysql扩展
docker-php-ext-install pdo_mysql

PHP容器安装Swoole扩展


# 下载Swoole扩展
wget https://pecl.php.net/get/swoole-4.8.12.tgz


# 解压压缩包
tar -xzvf swoole-4.8.12.tgz


# 将解压出来的安装包copy到php容器,/usr/src/php/ext/是docker-php扩展包目录
docker cp swoole-4.8.12 php7.4:/usr/src/php/ext/swoole


# 进入PHP容器
docker exec -it php7.4 /bin/bash


# 执行安装
docker-php-ext-install swoole

添加自定义的php.ini


# 新建ini文件
vim uploads.ini


# 在ini文件输入需要更新的内容
file_uploads = On
memory_limit = 500M
upload_max_filesize = 500M
post_max_size = 500M
max_execution_time = 600


# 复制ini进入docker-php自动读取的文件夹
docker cp uploads.ini php7.4:/usr/local/etc/php/conf.d/uploads.ini

5.创建Nginx容器


docker run --name nginx -p 80:80 -p 443:443 -d \
-v /project:/project \
-v /work/nginx/conf:/etc/nginx/conf.d \
-v /work/nginx/logs:/var/log/nginx \
-v /work/nginx/cert:/etc/nginx/cert \
--link php7.4:php \
nginx

6.创建Redis容器

简单启动


docker run --name redis -p 6379:6379 -d redis --requirepass "Password"

redis.conf启动

根据版本,在官方下载一个redis.conf文件(链接)

配置redis.conf

  • bind 127.0.0.1 -::1 # 注释掉这部分,这是限制redis只能本地访问
  • protected-mode no # 默认yes,开启保护模式,限制为本地访问
  • daemonize no # 默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败
  • appendonly yes # redis持久化(可选)
// redis.conf启动
docker run --name redis -p 6379:6379 -d \
-v /你的路径/redis.conf:/usr/local/redis/redis.conf redis \
redis-server /usr/local/redis/redis.conf \
--requirepass "Password" \
--appendonly yes \


间歇性凌云壮志,持续性混吃等死