Dockerfile构建mysql容器(公网、内网)

该博客介绍了使用Dockerfile构建公网、内网mysql容器的方法。公网构建需准备配置文件、Dockerfile及相关脚本;内网构建要先将公网镜像打包成tar载入。强调相关文件需在同一目录,还补充了若未设置my.cnf,构建容器时需添加密码参数等内容。

准备配置文件

my.conf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=100

公网情况下

Dockerfile

#使用官方5.7版本,latest为默认版本
FROM mysql:5.7
#设置环境变量 数据库密码
ENV MYSQL_ROOT_PASSWORD=123456
#将自定义的配置文件复制到容器内部
COPY my.conf /etc/my.conf
#开放3306端口
EXPOSE 3306
#运行命令启动mysql服务
CMD ["mysqld"]

build.sh

#构建镜像
docker build -t mysql .
#启动容器
docker run -d --restart=always --name mysql -p 3306:3306 mysql

delete.sh

#停止容器
docker stop mysql
#删除容器
docker rm mysql
#删除镜像
docker rmi mysql

restart.sh

#更新配置
docker cp my.conf mysql:/etc/my.conf
#重启mysql容器
docker restart mysql

内网情况下

先准备好镜像包,可以使用如下命令,将公

### 使用 Dockerfile 构建 MySQL 容器的最佳实践 构建基于 MySQL 的自定义容器通常涉及创建一个 `Dockerfile` 文件来指定所需的配置和依赖项。以下是最佳实践以及示例代码。 #### 1. 创建基础环境 选择官方的 MySQL 镜像作为基础镜像,这可以减少安全风险并提高稳定性[^1]。例如,在 `Dockerfile` 中声明如下: ```dockerfile FROM mysql:8.0 ``` 此命令表示使用最新的 MySQL 8.0 版本作为基础镜像。 #### 2. 设置环境变量 为了简化数据库初始化过程,可以通过设置环境变量的方式传递默认参数,比如根用户的密码和其他必要的配置选项[^2]。以下是一个例子: ```dockerfile ENV MYSQL_ROOT_PASSWORD=my-secret-pw \ MYSQL_DATABASE=testdb \ MYSQL_USER=user \ MYSQL_PASSWORD=password ``` 这些环境变量会自动被 MySQL 初始化脚本读取,并用于配置新安装的实例。 #### 3. 添加自定义配置文件 (可选) 如果需要调整 MySQL 的运行行为,则可以在宿主机上准备一份定制化的 my.cnf 文件,并将其复制到容器内的适当位置[^4]。操作方式如下所示: ```dockerfile COPY ./my.cnf /etc/mysql/my.cnf ``` 注意:确保路径 `/etc/mysql/` 存在于目标镜像中;如果不是,请先验证或者更改至其他适合的位置。 #### 4. 复制初始 SQL 脚本 (可选) 有时希望在第一次启动时执行某些 DDL/DML 操作,那么就可以把相应的 sql 文件加入其中: ```dockerfile COPY init.sql /docker-entrypoint-initdb.d/ ``` 这里利用了官方镜像的一个特性——任何放置于目录 `/docker-entrypoint-initdb.d/` 下面的 .sql 或者 .sh 文件都会被执行一次。 #### 5. 构建与测试镜像 完成上述步骤之后保存该文档命名为 `Dockerfile`, 接下来按照常规流程生成新的映象版本: ```bash docker build -t custom-mysql . ``` 最后一步就是检验成果啦! 启动一个新的实例看看效果吧! ```bash docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d custom-mysql ``` 以上即为通过 Dockerfile 来打造专属版 Mysql service 的全过程介绍. ```dockerfile # Example of a complete Dockerfile for creating a customized MySQL container. FROM mysql:8.0 ENV MYSQL_ROOT_PASSWORD=rootpassword \ MYSQL_DATABASE=exampledb \ MYSQL_USER=admin \ MYSQL_PASSWORD=adminpass COPY config/my.cnf /etc/mysql/my.cnf COPY setup/init.sql /docker-entrypoint-initdb.d/ EXPOSE 3306 CMD ["mysqld"] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值