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
相关推荐
雪可问春风20 小时前
docker环境部署
运维·docker·容器
呆瑜nuage20 小时前
MySQL表约束详解:8大核心约束实战指南
数据库·mysql
双份浓缩馥芮白21 小时前
【Docker】Linux 迁移 docker 目录(软链接)
linux·docker
元宝骑士21 小时前
FIND_IN_SET使用指南:场景、优缺点与MySQL优化策略
后端·mysql
fzb5QsS1p21 小时前
告别重复造轮子,Qt 快速开发脚手架
开发语言·qt·php
猿小喵21 小时前
MySQL慢查询分析与处理-第二篇
数据库·mysql·性能优化
Y001112361 天前
MySQL-进阶
开发语言·数据库·sql·mysql
kobe_OKOK_1 天前
S7 adapter Docker run
运维·docker·容器
披着羊皮不是狼1 天前
将Ubuntu从C盘移动到D盘
linux·运维·ubuntu
一个欠登儿程序员1 天前
在国产服务器上通过 Docker 部署 Windows 虚拟机
服务器·windows·docker