在Ubuntu中管理由Docker运行的MySQL、Apache、PHP是一项常见任务。核心管理原则是不直接管理Docker镜像,而是管理由这些镜像创建的容器,并通过Docker-Compose统一编排。 本文较详细的介绍了安装、配置基于MySQL、Apache、PHP的LAMP栈的方法与步骤。
一、安装Docker与docker-compose
1、安装docker
- ubuntu中docker的安装方法在半壶清水的另一篇文章中有较详细的介绍:
-
或者你可以使用以下命令安装docker:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
2、安装docker-compose
-
下载docker-compose,注意这里的版本号v2.5.0,在下载时可以更换成你当时最新的版本。
sudo curl -L "https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
授执行权限
sudo chmod +x /usr/local/bin/docker-compose
-
查看docker与docker-compose安装情况:
sudo docker --version
sudo docker-compose --version

二、创建与编辑配置文件
1、创建编辑docker-compose.yml文件
-
进入你的项目主目录,注意进入你实际的项目主目录,我这里的项目路径是:/var/www/html
cd /var/www/html
编辑docker-compose.yml,如果文件不存在,vim会自动创建。
sudo vim docker-compose.yml
2. 编写 docker-compose.yml 配置
-
编辑docker-compose.yml文件,注意格式,docker-compose.yml文件对缩进敏感,注意缩进。
version: '3.8'
services: # MySQL 数据库服务 mysql:
image: mysql:8.0
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 【设置mysql root用户的密码】
MYSQL_DATABASE: mysql_db
MYSQL_USER: mysql_user
MYSQL_PASSWORD: 【设置mysql mysql_user用户的密码】
volumes:
- mysql_data:/var/lib/mysql # 持久化数据库数据
- ./mysql/conf.d:/etc/mysql/conf.d # 自定义配置(可选)
ports:
- "3306:3306"
networks:
- lamp-network# Apache + PHP 应用服务 apache-php: image: php:8.1-apache # Apache + PHP镜像,根据你的项目部署版本。 container_name: lamp-apache restart: always depends_on: - mysql # 确保MySQL先启动 volumes: - /var/www/html:/var/www/html # 挂载你的PHP网站代码 - ./apache/sites-available:/etc/apache2/sites-available #可选的 虚拟主机配置 ports: - "80:80" - "443:443" networks: - lamp-network # 可选:phpMyAdmin 数据库管理工具 phpmyadmin: image: phpmyadmin/phpmyadmin container_name: lamp-phpmyadmin restart: always depends_on: - mysql environment: PMA_HOST: mysql # 连接到上面定义的mysql服务 UPLOAD_LIMIT: 64M ports: - "8080:80" networks: - lamp-network -
启动docker-compose,文件启动时,如果你的系统内没有文件中的镜像,系统会自动下载

-
查看容器运行状态:
sudo cocker-compose ps

三、验证安装
1、验证apache
- 登录你的网站: http://IP

2、验证mysql连接
- 登录 http://IP:8080

- 上图中输入你创建mysql容器时设置的用户名和密码后登录,下图表示连接数据库成功。

四、docker-compose常用操作命令
1、 日常管理命令
docker-compose up -d #启动服务
docker-compose ps # 查看运行状态
docker-compose stop # 停止服务
docker-compose down # 停止并移除所有容器、网络,但保留命名卷,如mysql_data。
docker-compose down -v # 停止并移除所有容器、网络、数据卷。注意数据会全部删除
docker-compose logs -f # 查看所有服务的实时日志
docker-compose logs -f mysql # 查看MySQL日志
docker-compose exec apache-php bash # 进入容器内部执行命令(例如检查Apache配置)
2、备份数据
-
备份html_mysql_data数据卷到当前
docker run --rm -v html_mysql_data:/volume -v (pwd):/backup alpine tar cf /backup/mysql_backup_(date +%Y%m%d).tar -C /volume ./
3、还原备份数据
-
停止服务
docker-compose down
-
数据还原,还原时注意文件名称
docker run --rm -v html_mysql_data:/volume -v $(pwd):/backup alpine sh -c "rm -rf /volume/* && tar xf /backup/mysql_backup_20251221.tar -C /volume"
启动服务
docker-compose up -d