前言
- 在本文中, 将搭建LAMP环境, 还包含redis,但php没有安装扩展(下一篇文章中将讲解如何安装扩展).
- 项目目录中需要携带nginx的配置文件(laoliu_pro/conf/default.conf).
- 项目文件直接拷贝到项目目录中即可(laoliu_pro/html/).
- php连接数据库时, 可将原来的localhost改为"mysql"("容器名").
- 如果不确定镜像的配置文件目录, 可以通过 docker inspect 镜像名 来查看具体的配置信息.
- 使用docker-compose.yaml时, 请自行去除注释.
目录结构
web/ /web/目录
|
├─ mysql/ mysql目录
| ├─ conf/ 配置文件目录
| | └─ my.cnf 配置文件
| ├─ log/ 日志目录
| └─ data/ 数据目录
|
├─ redis/ redis目录
| ├─ conf/ 配置文件目录
| | └─ my.cnf 配置文件
| ├─ log/ 日志目录
| └─ data/ 数据目录
|
├─ laoliu_pro/ 项目目录
| ├─ conf/ nginx配置文件目录
| | ├─ php.ini php.ini
| | └─ 000-default.conf apache配置文件
| ├─ html/ 项目目录
| | └─ index.html 项目文件, 这里是一个文件, 正常情况下可能会有多个文件
| └─ log/ 日志目录
|
└─ docker-compose.yaml docker-composer的配置文件
docker-compose.yaml配置文件说明
:ro 表示指定该 volume 为只读
version: '3'
services:
laoliu_pro:
image: php:7.3-apache
ports:
- "80:80"
- "443:443"
volumes:
- /etc/localtime:/etc/localtime:ro
- ./laoliu_pro/log:/var/log/apache2:rw
- ./laoliu_pro/html:/var/www/html:rw
# apache配置目录
- ./laoliu_pro/conf/000-default.conf:/etc/apache2/sites-available/000-default.conf:ro
# php.ini
- ./laoliu_pro/conf/php.ini:/usr/local/etc/php/php.ini
container_name: laoliu_pro
# 服务名
mysql:
restart: always
# mysql镜像, 可选5.7或8
image: mysql:5.7
environment:
# root密码
MYSQL_ROOT_PASSWORD: 1234@5678
# 允许远程连接
MYSQL_ROOT_HOST: '%'
# 挂载卷 <宿主机路径>:<容器路径>
volumes:
# docker时间同步
- /etc/localtime:/etc/localtime:ro
# 映射日志目录
- ./mysql/log:/var/log/mysql
# 映射配置目录
- ./mysql/conf:/etc/mysql/mysql.conf.d:rw
# 映射数据目录
- ./mysql/data:/var/lib/mysql:rw
# 容器名称
container_name: mysql
# 端口映射 <宿主机端口>:<容器端口>
ports:
- 3306:3306
# 服务名
redis:
restart: always
# redis镜像
image: redis:5-alpine
# 挂载卷 <宿主机路径>:<容器路径>
volumes:
# docker时间同步
- /etc/localtime:/etc/localtime:ro
# 映射配置目录
- ./redis/conf:/etc/redis:ro
# 映射数据目录
- ./redis/data:/data:rw
# 容器名称
container_name: redis
# 端口映射 <宿主机端口>:<容器端口>
ports:
- 6379:6379
hostname: redis
# 在容器启动后执行的命令
command: redis-server /etc/redis/redis.conf
apache配置文件
文件路径: /web/laoliu_pro/conf/000-default.conf
<VirtualHost *:80>
ServerName laoliu.pro
ServerAlias laoliu.pro
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
DirectoryIndex index.php index.html index.htm
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
PHP项目
PHP项目直接部署到/web/laoliu_pro/html中即可. 记得修改数据库配置文件
php.ini
如果需要修改运行内存, 上传设置, 超时时间等, 则需要补充/web/laoliu_pro/conf/php.ini文件. 若只是使用默认设置, 则可以在docker-compose.yaml中去掉php.ini的映射.
启动容器
# 启动容器
docker-compose up -d
启动日志
如果容器启动失败, 可以通过启动日志查看具体的报错信息, 比如容器启动时没有找到配置文件等.
# 查看启动日志
docker-compose logs laoliu_pro