ubuntu中使用使用Docker-Compose管理MySQL、Apache、PHP容器

在Ubuntu中管理由Docker运行的MySQL、Apache、PHP是一项常见任务。核心管理原则是不直接管理Docker镜像,而是管理由这些镜像创建的容器,并通过Docker-Compose统一编排。 本文较详细的介绍了安装、配置基于MySQL、Apache、PHP的LAMP栈的方法与步骤。

一、安装Docker与docker-compose

1、安装docker

  • ubuntu中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

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
相关推荐
光于前裕于后2 小时前
在AWS Redshift 中使用联邦查询 MySQL
mysql·aws·redshift
峰顶听歌的鲸鱼2 小时前
19.docker 图形化管理界面
运维·笔记·docker·容器·学习方法
好奇的菜鸟2 小时前
Windows 环境下使用 Docker 部署 Java 开发中间件完全指南
java·windows·docker
未来之窗软件服务2 小时前
幽冥大陆(六十四) PHP7.0 SSL 文字解密—东方仙盟筑基期
php·ssl·加解密·仙盟创梦ide·东方仙盟
一往无前fgs2 小时前
【问题记录】在openEuler 24 系统使用宝塔面板安装Mysql数据库启动失败问题
数据库·mysql
q_19132846952 小时前
基于SpringBoot+Vue.js的教师绩效考核管理系统
vue.js·spring boot·笔记·后端·mysql·毕业设计
航Hang*2 小时前
第3章:复习篇——第5-2节:数据库编程2
数据库·笔记·sql·mysql·sqlserver
航Hang*2 小时前
第3章:复习篇——第5-1节:数据库编程1
数据库·笔记·sql·mysql·sqlserver
航Hang*2 小时前
第3章:复习篇——第6节:数据库安全管理与日常维护
数据库·笔记·sql·mysql