docker-mysql


1.Dockerfile_mysql

# This mysql Dockerfile
# Version 20240206

# Base images 基础镜像
FROM dockerstorage.xxx.com:5533/os/anolisos:latest

#ENV 设置环境变量
ENV MYSQL_HOME=/usr/local/mysql
ENV PATH=$MYSQL_HOME/bin:$PATH
ENV CLASSPATH=.:$MYSQL_HOME/lib:$CLASSPATH

#ADD 文件放在当前目录下,拷过去会自动解压
RUN useradd mysql
ADD mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz /usr/local/
ADD my.cnf /etc/

#WORKDIR 相当于cd
WORKDIR /usr/local/

#RUN 执行以下命令
RUN mv mysql-5.7.44-linux-glibc2.12-x86_64 mysql && chown -R mysql:mysql mysql && /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data && cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && /usr/sbin/chkconfig --add mysqld

#启动脚本
RUN echo '#!/bin/bash' >> /home/run.sh
RUN echo '/etc/init.d/mysqld start' >> /home/run.sh
RUN chmod 775 /home/run.sh

#CMD 运行以下命令
CMD /home/run.sh && tail -f /dev/null

2.docker-compose.yml

# 编排服务(容器),每个服务启动一个镜像
# Time: 20240206
version: '3'

services:
mysql-master:
image: dockerstorage.xxx.com:5533/mysql/mysql-master:5.7.44
container_name: mysql-master
restart: always
build:
context: ./
dockerfile: Dockerfile_mysql
ports:
- 3306:3306
volumes:
# 初始化数据库,只能在master节点,不需要可以删除
#- ./init.sql:/docker-entrypoint-initdb.d/init.sql
# node1的数据卷映射
- ./data:/home/mysql/data
environment:
# 时区
- TZ=Asia/Shanghai
# 主从复制用户
#- MYSQL_REPLICATION_USER=repl-user
# 主从复制密码
#- MYSQL_REPLICATION_PASSWORD=root
# 主从复制角色
#- MYSQL_REPLICATION_MODE=master
dns:
- 114.114.114.114
- 223.5.5.5
- 8.8.8.8
networks:
- basic
ulimits:
nproc:
soft: 65535
hard: 65535
nofile:
soft: 65535
hard: 65535

networks:
basic:
driver: bridge