有时候官方现在的docker镜像并不能很好地符合自己的需求,我们需要自己定制。以下我主要是在官方mariadb:latest镜像的基础上,做一些定制化的操作如修改容器的编码格式。
/root/.pip目录下有两个文件:
Dockerfile的文件内容如下:
FROM mariadb:latest
RUN mkdir /root/.pip > /dev/null 2>&1
WORKDIR /root/.pip/
# copy ./pip.conf from host to docker container
COPY pip.conf ./
# replace your_name with your_name, your_email with your email
MAINTAINER your_name your_email
# update install resource
RUN apt-get update
# clean cache
RUN apt-get autoclean
# install python3-pip
RUN apt install vim python3-pip -y
# install python lib
RUN pip3 install sqlacodegen pymysql
# set container's coding format
ENV LANG C.UTF-8
CMD ["mysqld_safe"]
pip.conf文件内容如下:
[global]
trusted-host = mirrors.aliyun.com
index-url = https://mirrors.aliyun.com/pypi/simple
编译docker镜像
docker build /root/.pip/ -t my_mariadb:v1
编译完成
编译成功的docker镜像
docker image ls
利用刚刚编译的my_mariadb:v1镜像创建容器
docker run --name mariadb_02 -p 3307:3306 \
-v /opt/docker/mariadb_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root@123 \
-e MYSQL_USER=admin \
-e MYSQL_PASSWORD=admin@123 \
-e MYSQL_ROOT_HOST=% \
-d my_mariadb:v1 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
查看生成的容器mariadb_02 :
docker ps -a
进入mariadb_02 容器内并查看容器编码格式:
docker exec -it mariadb_02 bash
locale
登录进mariadb数据库引擎内并创建test01数据库:
mysql -uroot -p
create database test01 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
指定使用test01数据库,并在其中创建几张数据表:
use test01;
create table student(
id int primary key auto_increment comment '主键',
name varchar(50) comment '学生中文姓名',
e_name varchar(50) comment '学生英文姓名',
dep_id int comment '院系id',
account_address varchar(200) comment '户口地(住)址',
home_address varchar(200) comment '家庭住址',
now_address varchar(200) comment '当前住址',
telephoneNum varchar(20) comment '手机号码',
wechartNum varchar(50) comment '微信号码',
qqNum varchar(20) comment 'QQ号码'
) comment = '学生信息表' charset utf8;
查看创建student数据表时的语句:
show create table student;
可以看到,已经能在容器内正常输入与显示中文了