learning/k8s-practice/spring-cloud/db-example.md
本文所使用的代码请参考 db-example
项目结构解读
部署类型
关于 MySQL 数据库的部署,建议的做法如下:
环境变量
检查 Dockerfile
FROM eipwork/mysql:5.7.26-1.1.11
LABEL maintainer="[email protected]"
#把数据库初始化数据的文件复制到工作目录下
RUN mv /etc/my.cnf /etc/my.cnf.backup
COPY docker/my.cnf /etc/my.cnf
COPY docker/init_sql/*.sql /init_sql/
EXPOSE 3306
EXPOSE 9104
ENV ENABLE_EUREKA_CLIENT=TRUE
ENV eureka.name=db-example
ENV eureka.port=80
ENV eureka.management.port=9104
ENV eureka.serviceUrl.default=http://monitor-eureka:9000/eureka
Dockerfile 中定义了环境变量 ENABLE_EUREKA_CLIENT=TRUE,这个环境变量用于 Prometheus 监控套件 的服务发现。在不启用监控套件的情况下,应该将 ENABLE_EUREKA_CLIENT 这个环境变量设置为 FALSE。
容器镜像 eipwork/mysql:5.7.26-1.1.11 基于 mysql/mysql-server:5.7.26 制作。参考文档 More Topics on Deploying MySQL Server with Docker,通过设置环境变量 MYSQL_ROOT_PASSWORD ,可指定 MySQL 的root 用户密码
::: tip 可以在部署时覆盖环境变量的值,无需修改 Dockerfile。 :::
容器 Command 参数
容器镜像 eipwork/mysql:5.7.26-1.1.11 的 Dockerfile 指定了容器的启动方式,此处无需为容器额外设置 Command 参数。
数据卷
参考文档 More Topics on Deploying MySQL Server with Docker,我们需要将容器内路径 /var/lib/mysql 映射到数据卷,以便数据能够持久化。
访问方式及互联网入口
通常在两种情况下需要访问数据库:
为了同时支持这两种使用场景,建议为数据库配置 VPC内访问方式 (NodePort Service)
与数据库的通信为 socket,不能为其配置互联网入口 Ingress
创建ConfigMap
创建工作负载