Docker + Spring Boot + Mysql

实验环境

OS Version			Ubuntu 19.04
Java Version		openjdk:8-jdk
Docker Version		19.03.2
Mysql Version		5.7.27
Spring Boot Version	2.1.1.RELEASE
Spotify Version		1.4.8
Maven Version		3.6.1

Docker + Mysql

编写Dockerfile 制作基础镜像

FROM mysql:5.7.27
MAINTAINER waichan

VOLUME /tmp

ENV LANG C.UTF-8
docker build -t waichan/mysql:temp .

运行基础镜像,连接运行的容器,在容器中配置Mysql环境

docker run --name mysql-temp -d waichan/mysql:temp

docker exec -ti mysql-temp bash
apt-get update
apt-get install vim
cd /etc/mysql/mysql.conf.d
vim mysqld.cnf

在这里插入图片描述

docker stop mysql-temp
docker commit mysql-temp waichan/mysql:5.7.27

到现在为止我们制作了mysql镜像 waichan/mysql:5.7.27,它和官网上的Docker镜像相比有如下三点区别:

  1. 将Docker的语言环境修改为UTF-8
  2. 配置Linux mysql 忽略表名大小写敏感
  3. 设置mysql 字符集编码为utf8

当然现在还不能满足我们实际使用需求,一个是没有暴露访问服务的端口,二是没有数据,现在我们运行制作好的waichan/mysql:5.7.27镜像

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d waichan/mysql:5.7.27
docker cp HOST_SQL_PATH/mysql.sql mysql:/tmp
docker exec -ti mysql bash
> mysql -uroot -p
> password
> show databases;
> create database ry;
> use ry;
> source /tmp/mysql.sql;

到目前为止我们已经制作并运行了mysql镜像,现在我们可以登录为root账号通过3306端口访问mysql容器。

Docker + Spring Boot

Spring Boot 项目基于Maven项目构建,在制作镜像之前需要编写Dockerfile文件,并在pom中配置com.spotify.dockerfile-maven-plugin插件。
在这里插入图片描述
制作Dockerfile, 基础镜像基于openjdk:8-jdk(如果想要制作更小的镜像可以选择openjdk:8-jdk-slim, openjdk:8-jdk-alpine), 这里除了将Docker的语言环境设置为UTF-8, 还将时区设置为Asia/Shanghai.

FROM openjdk:8-jdk
MAINTAINER waichan

VOLUME /tmp

EXPOSE 8080

ARG JAR_FILE

ENV LANG C.UTF-8
ENV TZ=Asia/Shanghai
RUN set -eux
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
RUN echo $TZ > /etc/timezone

ADD ${JAR_FILE} /target/app.jar

ENTRYPOINT ["mkdir", "/tmp/logs"]
ENTRYPOINT ["mkdir", "/tmp/profile"]
ENTRYPOINT ["java", "-jar", "/target/app.jar"]

在pom.xml中配置spotify插件, 将镜像制作的生命周期绑定到maven的生命周期中

<plugin>
	<groupId>com.spotify</groupId>
	<artifactId>dockerfile-maven-plugin</artifactId>
	<version>${dockerfile.maven.version}</version>
	<executions>
		<execution>
			<id>default</id>
			<goals>
				<goal>build</goal>
				<goal>push</goal>
			</goals>
		</execution>
	</executions>
	<configuration>
		<repository>waichan/${project.artifactId}</repository>
		<tag>${project.version}</tag>
		<buildArgs>
			<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
		</buildArgs>
	</configuration>
</plugin>

运行mvn install命令, 创建docker 镜像, 并运行waichan/project.artifactId:project.version, 连接mysql镜像, 这里值得注意的是SpringBoot项目中连接mysql的数据源配置不需要使用明确的Ip地址, 直接使用mysql别名即可(mysql:3306)

mvn install

docker run --name spring-boot --link mysql:mysql -p 8080:8080 -d waichan/${project.artifactId}:${project.version}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值