1.创建项目
使用idea创建springboot项目
项目地址: springboot-docker-demo
创建好之后,在pom.xml中添加docker的build工具
这里需要服务器docker开通远程访问端口(下面有开通方法),用于项目docker镜像的打包上传
dockerHost docker服务器地址
imageName 镜像名称+版本号
-
<build>
-
<plugins>
-
<plugin>
-
<groupId>org.springframework.boot
</groupId>
-
<artifactId>spring-boot-maven-plugin
</artifactId>
-
</plugin>
-
<!-- Docker maven plugin -->
-
<plugin>
-
<groupId>com.spotify
</groupId>
-
<artifactId>docker-maven-plugin
</artifactId>
-
<version>1.0.0
</version>
-
<configuration>
-
<!-- docker私服的地址 -->
-
<dockerHost>http://192.168.112.135:2375
</dockerHost>
-
<!--镜像名称以及版本号-->
-
<imageName>demo:1.0.0
</imageName>
-
<!-- 若需要重复构建相同标签名称的镜像,可将 forceTags 设置为 true -->
-
<forceTags>true
</forceTags>
-
<!--Dockerfile的位置 -->
-
<dockerDirectory>${project.basedir}/src/main/docker
</dockerDirectory>
-
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
-
<resources>
-
<resource>
-
<targetPath>/
</targetPath>
-
<directory>${project.build.directory}
</directory>
-
<include>${project.build.finalName}.jar
</include>
-
</resource>
-
</resources>
-
</configuration>
-
</plugin>
-
<!-- Docker maven plugin -->
-
</plugins>
-
</build>
接下来在项目的 src/java/main 目录下创建 docker/Dockerfile 结构如下
Dockerfile文件内容为
-
# 父镜像
-
FROM lion_li/jdk:
8
-
-
MAINTAINER Lion Li
-
-
VOLUME /root
-
# 添加jar包到容器并重命名
-
ADD docker-demo-
0.
0.
1-SNAPSHOT.jar demo.jar
-
-
RUN bash -c
'touch /demo.jar'
-
# 同步容器与本机时间
-
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/
localtime \
-
&& echo
'Asia/Shanghai' >
/etc/timezone
-
# 使用端口
-
EXPOSE
8080
-
-
ENV JAVA_OPTS=
"-Xms256m -Xmx256m"
-
-
# -Djava.security.egd=file:/dev/./urandom 加速tomcat启动
-
# -Dspring.profiles.active=prod 指定spring运行环境,不用可以删除
-
ENTRYPOINT [
"sh",
"-c",
"java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=prod -jar /demo.jar"]
lion_li/jdk:8 该镜像为本人搭建的oracle jdk镜像 也可以使用 openjdk镜像 java:8
如需oracle jdk镜像请参考本人的另一篇文章: docker 搭建 oracle jdk(版本可更换) 镜像
2.构建镜像
使用maven打包工具打包
使用docker工具构建镜像并上传服务器
此操作需要服务器docker开通远程访问端口
可以参考本人的另一篇文章: docker 开启端口 2375 供外部程序访问
查看镜像
docker images
上传成功
再次执行,docker会把名称赋值给我们较新的镜像,原先较旧的镜像也不会覆盖,而是会变为一个无名镜像
将无名镜像删除即可
可以参考我的另一篇文章: docker 删除 容器/镜像 方法
3.生成容器
创建容器
docker run -d --name demo -p 8080:8080 -t demo:1.0.0
查看所有容器
docker ps -a
创建成功,运行容器
docker start demo
4.查看springboot docker容器运行日志
docker logs -f -t --tail 行数 容器名
docker logs -f -t --tail 50 demo
5.测试
访问insert接口
访问查询接口
测试成功