Dockerfile配置MySQL镜像

2024-04-18 14:14:30 浏览数 (1)

Dockerfile命令

代码语言:bash复制
FROM mysql:5.7

# 复制 MySQL 5.7 安装包到容器中
COPY mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz /opt/software/mysql.tar.gz

# 设置环境变量
ENV MYSQL_ROOT_PASSWORD=sql123
ENV MYSQL_DATABASE=mydb
ENV MYSQL_USER=myuser
ENV MYSQL_PASSWORD=mypassword

# 在容器启动时自动生成 my.cnf 文件
RUN echo "[mysqld]" > /etc/mysql/my.cnf 
    && echo "datadir=/var/lib/mysql" >> /etc/mysql/my.cnf 
    && echo "socket=/var/run/mysqld/mysqld.sock" >> /etc/mysql/my.cnf 
    && echo "user=mysql" >> /etc/mysql/my.cnf 
    && echo "symbolic-links=0" >> /etc/mysql/my.cnf 
    && echo "log-error=/var/log/mysql/error.log" >> /etc/mysql/my.cnf 
    && echo "pid-file=/var/run/mysqld/mysqld.pid" >> /etc/mysql/my.cnf

# 创建日志文件目录并授权
RUN mkdir -p /var/log/mysql && chown -R mysql:mysql /var/log/mysql

# 授权安装目录
RUN chown -R mysql:mysql /var/lib/mysql

# 设置容器启动时执行的命令
CMD ["mysqld"]

# 映射端口并设置开机启动
EXPOSE 3306
ENTRYPOINT ["docker-entrypoint.sh"]

构建镜像命令

代码语言:bash复制
# 构建镜像
docker build -t mysql-containe .

创建容器命令

代码语言:bash复制
# 运行容器
docker run -d -p 3306:3306 --name mysql-custom -v /opt/software:/opt/software mysql-containe

宿主机登录容器内的mysql

代码语言:bash复制
docker exec -it mysql-container mysql -uroot -p
或者
mysql -h <container_ip> -u root -p

0 人点赞