首页 > 数据库 >docker compose部署mysql数据库

docker compose部署mysql数据库

时间:2023-06-27 10:34:52浏览次数:42  
标签:容器 compose mysql 数据库 sql MYSQL docker

1. 想要达成的目标

通过docker compose 来部署 mysql,并实现一些列需求

  • 在mysql容器初始化时设置字符类型
  • 设置mysql容器的时区为中国时区
  • 设置mysql root密码,采用.env传入参数
  • 初始化时创建一个数据库
  • 初始化时创建用户名和密码
  • 挂载本地目录到容器内
  • 容器初始化时执行脚本,导入需要的数据库数据
  • 使用现有创建的docker network网络,并设定固定IP地址
  • 设置容器运行时使用的内存不超过1G

2. 实现方式

  • docker compose文件
version: "3.9"
services:
# app 标签
  mysql:
# 使用的镜像名称
    image: mysql:5.7
# 容器名称
    container_name: mysql57
# 容器重启策略
    restart: always
# 容器初始化时执行的指令
    command:
      [
          '--character-set-server=utf8mb4',
          '--collation-server=utf8mb4_unicode_ci',
      ]
# 环境遍历
    environment:
# 设置容器内的时区
      TZ: Asia/Shanghai
# 设置mysql root密码,可以直接设置明文密码 MYSQL_ROOT_PASSWORD: root,这里采用.env来传入密码
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
# 创建数据库
      MYSQL_DATABASE: wordpress
# 设置数据库用户名
      MYSQL_USER: demo
# 设置数数据库密码
      MYSQL_PASSWORD: demo
# 对外端口的映射
    ports:
      - 43306:3306
# 映射目录到容器
    volumes:
      - ./db_data:/var/lib/mysql
# 将需要执行的sql语句也加入
      - ./myemployees.sql:/docker-entrypoint-initdb.d/myemployees.sql
# 当有初始化时需要执行sql语句
      - ./db-init.sh:/docker-entrypoint-initdb.d/db-init.sh
# 指定使用的容器网络和地址
    networks:
      seclabs:
        ipv4_address: 10.1.0.2
# 限制容器内存大小
    mem_limit: 1024m
# 在宿主机上创建
# docker network create --driver=bridge --subnet=10.1.0.0/24 seclabs
# 调用外部网络,注意不能调用默认生成的docker0网络
networks:
  seclabs:
    external: true
  • .env 文件
$ cat .env 
MYSQL_ROOT_PASSWORD=root
  • db-init.sh
$ cat db-init.sh 
#!/bin/bash
mysql -uroot -proot < /docker-entrypoint-initdb.d/myemployees.sql >/dev/null 2>&
  • myemployees.sql
-- 此处文件为自己随意创建的几条数据

3. 启动运行

docker compose up -d

标签:容器,compose,mysql,数据库,sql,MYSQL,docker
From: https://www.cnblogs.com/amsilence/p/17507983.html

相关文章

  • javascript连接MySQL
    varmysql =require('mysql');varconnection=mysql.createConnection({  host  :'localhost',  user  :'root',  password:'password',  port:'3306',  database:'nufix'});connecti......
  • 《MySQL 实战 45 讲》学习笔记一
    一条SQL查询语句是如何执行的?MySQL的基本架构示意图(语句执行流程)  ......
  • C# mysql MySqlDataAdapter fill(dataset) 字符串格式错误
    MySqlDataAdapter fill(dataset)时候报错字符串格式错误。排查两天发现是mysql数据表内字段设计错误,datetime格式的字段长度设置错误,应设置为0,原先设置为6.代码如下try{using(MySqlConnectionconnection=newMySqlConnection(connectio......
  • autoware docker安装
    1、用源码编译还是安装docker版?用docker版,源码编译的依赖项不好装2、autowaredocker的版本有哪些?装什么版本?3、docker的基本使用(1)权限sudogroupadddockersudogpasswd-a$USERdockernewgrpdockerdockerps(2)命令(3)共享文件夹的使用等问题4、autoware的基本使用......
  • 什么是Docker
    什么是DockerDocker是一个开源的应用容器引擎,基于 Go语言 并遵从Apache2.0协议开源。ogo解释:标志是一头鲸鱼携带着一堆容器。它正在向您发送这些信息的途中。Docker直译过来是码头工人,然而Docker给人的第一感觉是容器,容器技术英译为LinuxContainer,Container的直译有......
  • Docker技术架构概述
    1、Docker技术构成Docker软件采用客户-服务(CS架构)的技术架构模式,DockerClient和DockerDaemon交互,DockerDaemon负责创建、运行、发布容器,DockerClient和DockerDaemon可以在同一个系统中,或者DockerClient可以通过RESTAPI远程控制DockerDaemon。DockerCompose负责控制一组应......
  • 使用 Debian、Docker 和 Nginx 部署 Web 应用
    前言本文将介绍基于Debian的系统上使用Docker和Nginx进行Web应用部署的过程。着重介绍了Debian、Docker和Nginx的安装和配置。第1步:更新和升级Debian系统通过SSH连接到服务器。更新软件包列表:sudoaptupdate升级已安装的软件包:sudoaptupgrade第2步:......
  • 第六章 使用Mysqli操作数据库
    demo1.php<?php//使用mysqli对象操作数据库//创建mysqli对象(资源句柄)$_mysqli=newmysqli();//连接数据库1.主机名(ip)2.账户3.密码4.数据库//mysqli_connect()函数==$_mysqli->connect()$_mysqli->connect('localhost','root','yangfan',......
  • MYSQL 把小于50个字节的数据找出来
    SELECT aid, typeid, body, redirecturl, templet, userip FROM dede_addonarticle WHERELENGTH(body)<50; length是一个函数,判断字符的长度,<50应该写在外面 PS:把少于50个字节的文章查询出来 效果图:        ......
  • MySql InnoDB和Myisam的区别
    MyISAM和InnoDB讲解InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供......