docker--部署mysql5.7并初始化

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: docker--部署mysql5.7并初始化

前戏


大家可能都在服务器上搭建过mysql,或许遇到过不少的坑。但是使用docker部署mysql则很容易

mysql的镜像文档:https://hub.docker.com/_/mysql


docker部署mysql


拉取mysql 5.7的镜像

docker pull mysql:5.7

查看镜像

docker images

启动镜像

docker run --name zzmysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=zou123456 -d mysql:5.7

# 上面的没有挂载,也不是最新的mysql,最新的django已经不支持5.7了,所以这里使用最新的mysql,挂载到本地的 /var/lib/mysql目录下
docker run -d --name mydb -v mysql:/var/lib/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=zou123456 mysql

说明:

  • --name  后面是指定的容器名
  • -p 代表端口映射,格式为 宿主机映射端口:容器运行端口
  • -e 代表添加环境变量
  • MYSQL_ROOT_PASSWORD是root用户的登陆密码
  • mysql:5.7 是下载的镜像+版本(若不指定版本,该命令会重新下载mysql最新的镜像)
  • -d 后台启动

外网访问的是3307端口

进入容器内部

# 最简单的进入方式
docker exec -it <contrainerId>  /bin/bash
# 这种方式下,数据库才可输入和展示中文数据
docker exec -it <contrainerId> env LANG=C.UTF-8 /bin/bash

我们这里使用简单的进入方式

docker exec -it zzmysql /bin/bash

执行建库建表插入数据

-- 建库
create database `db_student`;
SET character_set_client = utf8;
use db_student;
-- 建表
drop table if exists `user`;
CREATE TABLE user (
id tinyint(5) zerofill auto_increment not null comment '学生学号',
name varchar(20) default null comment '学生姓名',
age tinyint default null comment '学生年龄',
class varchar(20) default null comment '学生班级',
sex char(5) not null comment '学生性别',
unique key (id)
)engine=innodb charset=utf8;
-- 插入数据
insert into user values('1','小明','15','初三','男');
insert into user values('2','小红','13','初二','女');

查询下user表里的数据

可以看出我们查询出来的数据name,classs,sex没有显示,这是因为这个镜像是外国人写得,所以对中文默认不支持


解决不显示中文的问题


这里解决方法有两种,第一种是在进入容器的时候设置环境变量,使用中文就可以了,命令如下,上面也说过

docker exec -it zzmysql env LANG=C.UTF-8 /bin/bash

env LANG=C.UTF-8 设置语言为utf-8

第二种使用dockerfile,在初始化的时候就设置好

创建一个init.sql文件,内容如下(和上面的一样)

创建dockerfile,内容如下

FROM mysql:5.7
WORKDIR /docker-entrypoint-initdb.d
ENV LANG=C.UTF-8
ADD init.sql .

注意:dockerfile和init.sql在同一目录

ADD既可以复制也可以执行init.sql文件,copy只复制

构建docker镜像

docker build -t mysql:zou .

启动容器进入容器内部

docker run --name zzmysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=zou123456 -d mysql:zou

连接数据库,查看数据是否显示


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
关系型数据库 MySQL Shell
4.Docker 应用部署
4.Docker 应用部署
|
3天前
|
负载均衡 Cloud Native Linux
Docker部署Traefik结合内网穿透远程访问Dashboard界面
Docker部署Traefik结合内网穿透远程访问Dashboard界面
|
3天前
|
存储 Linux 文件存储
Linux使用Docker部署Traefik容器并实现远程访问管理界面-1
Linux使用Docker部署Traefik容器并实现远程访问管理界面
|
3天前
|
存储 Shell Docker
docker 部署单节点的etcd以及 常用使用命令
在 Docker 中部署单节点的 etcd 以及一些常用命令的操作,可以按照以下步骤进行: ## 一、部署单节点 etcd 1. **拉取 etcd Docker 镜像**:您可以从 Docker Hub 拉取 etcd 的官方镜像。 ```shell docker pull quay.io/coreos/etcd:latest ``` 2. **启动 etcd 容器**:使用 `docker run` 命令来启动 etcd 容器。以下是一个示例命令,其中将容器的 2379 端口映射到主机的 2379 端口: ```shell docker run -d \
|
3天前
|
关系型数据库 MySQL 数据库
Docker数据库Mysql
Docker数据库Mysql
|
3天前
|
弹性计算 Shell 数据安全/隐私保护
自动化构建和部署Docker容器
【4月更文挑战第30天】
7 0
|
3天前
|
存储 关系型数据库 MySQL
docker安装mysql8忽略大小写
docker安装mysql8忽略大小写
|
3天前
|
关系型数据库 MySQL 开发工具
Docker安装mysql8.0
Docker安装mysql8.0
|
3天前
|
关系型数据库 MySQL 应用服务中间件
centos7在线安装jdk1.8+tomcat+mysql8+nginx+docker
现在,你已经成功在CentOS 7上安装了JDK 1.8、Tomcat、MySQL 8、Nginx和Docker。你可以根据需要配置和使用这些服务。请注意,安装和配置这些服务的详细设置取决于你的具体需求。
20 2
|
4天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用合集之关于在Docker环境中部署和维护PolarDB-X,有相关文章可以参考吗
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。