docker安装MySQL,创建MySQL容器以及docker-compose.yml配置

发布于:2025-07-01 ⋅ 阅读:(21) ⋅ 点赞:(0)

Docker安装Mysql

1.在docker-hup里查找MySQL镜像

在这里插入图片描述

2.在docker里安装MySQL

// 安装最新版本
docker pull mysql

// 安装指定版本
docker pull mysql:8.0.43

// 查看安装的镜像
docker images

3.创建MySQL容器

(1)手动创建挂在文件
// 创建挂载文件
mkdir -p /root/mysql/{log,data,conf}
// 确保MySQL进程有写入权限提高权限
chmod -R 755 /root/mysql 
(2)创建自定义网络

Docker自定义网络的核心优势:

  1. 容器间通信:自定义网络允许容器通过服务名直接通信,无需硬编码IP地址。
  2. 网络隔离:提高安全性,防止未授权访问。
  3. 灵活的网络策略:可以设置网络别名、防火墙规则等。
  4. 避免端口冲突:多个服务可以使用相同的端口号,通过不同网络隔离。
// 创建自定义网络
docker network create fusion_network
// 查看自定义网络
docker network ls
//查找使用该网络的容器
docker network inspect mysql_network | grep Containers
// 停止网络
docker stop fusion_network
// 删除网络
docker rm fusion_network
(3) 创建容器
docker run -d \
--name mysql \  # 容器名称
--network fusion_network \                  # 使用自定义网络
-p 3306:3306 \                   # 端口号
--restart unless-stopped \       # 异常退出时自动重启
-v /root/mysql/log:/var/log/mysql \  # 日志持久化
-v /root/mysql/data:/var/lib/mysql \ # 数据持久化
-v /root/mysql/conf:/etc/mysql \     # 配置文件持久化
-e MYSQL_ROOT_PASSWORD=123456 \        #密码
mysql:8.0.42   # 指定镜像版本
docker run -d \
--name fusion_mysql \
--network fusion_network \
-p 3306:3306 \
--restart unless-stopped \
-v /root/mysql/log:/var/log/mysql \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.42

4.docker-compose.yml配置

services:
  mysql:
    image: mysql:8.0.42
    container_name: fusion_mysql
    networks:
      - fusion_network
    ports:
      - "3303:3306"
    volumes:
      - /root/mysql/log:/var/log/mysql
      - /root/mysql/data:/var/lib/mysql
      - /root/mysql/conf:/etc/mysql/conf.d
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    restart: unless-stopped

  redis:
    image: redis:8.0.2
    container_name: fusion_redis
    ports:
      - "6379:6379"
    networks:
      - fusion_network
    volumes:
      - /root/redis/conf:/usr/local/etc/redis
    environment:
      TZ: Asia/Shanghai
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    restart: unless-stopped

  mongo:
    image: mongo:8.0.10
    container_name: fusion_mongo
    ports:
      - "27017:27017"
    networks:
      - fusion_network
    volumes:
      - /root/mongo:/etc/mongo
      - /root/mongo/data/db:/data/db
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456
      TZ: Asia/Shanghai
    command: ["mongod", "--config", "/etc/mongo/mongod.conf"]
    restart: unless-stopped

  rabbitmq:
    image: rabbitmq:4.0.9
    container_name: fusion_reabbitmq
    ports:
      - "4369:4369"
      - "5671:5671"
      - "5672:5672"
    networks:
      - fusion_network
    environment:
      RABBITMQ_DEFAULT_USER: root
      RABBITMQ_DEFAULT_PASS: 123456
      TZ: Asia/Shanghai
    restart: unless-stopped

  minio:
    image: minio/minio:latest
    container_name: fusion_minio
    ports:
      - "9000:9000"
      - "9001:9001"
    networks:
      - fusion_network
    environment:
      MINIO_ACCESS_KEY: root
      MINIO_SECRET_KEY: 123456
      TZ: Asia/Shanghai
    volumes:
      - /home/minio/data:/data
      - /home/minio/config:/root/.minio
    command: ["server", "/data", "--console-address", ":9001", "--address", ":9000"]
    restart: always

  elasticsearch:
    image: elasticsearch:8.0.1
    container_name: fusion_elasticsearch
    networks:
      - fusion_network
    ports:
      - "9200:9200"
      - "9300:9300"
    privileged: true
    volumes:
      - /root/elasticsearch/data:/usr/share/elasticsearch/data
      - /root/elasticsearch/plugins:/usr/share/elasticsearch/plugins
      - /root/elasticsearch/config:/usr/share/elasticsearch/config
    environment:
      discovery.type: single-node
      ES_JAVA_OPTS: "-Xms512m -Xmx512m"
    restart: always

  kibana:
    image: kibana:8.0.1
    container_name: fusion_kibana
    networks:
      - fusion_network
    ports:
      - "5601:5601"
    privileged: true
    volumes:
      - /root/kibana/data:/usr/share/kibana/data
      - /root/kibana/config:/usr/share/kibana/config
    environment:
      ELASTICSEARCH_HOSTS: http://elasticsearch:9200
    restart: always