单点登录工程,后端的web服务,代码是用springboot写的,之前都是在测试环境用nohup java -jar直接运行的,现在要部署到docker服务器上
1.创建dockerfile文件
# Pull base image
FROM java:8
MAINTAINER fengjian "ifengjian@qq.com"
VOLUME /tmp
# 添加
ADD sso-login-0.0.1-SNAPSHOT.jar app.jar
# Define default command.PROFILES 是可传递的变量
ENTRYPOINT ["sh","-c","java -jar app.jar --spring.profiles.active=$PROFILES "]
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
2.构建可运行的jar包
这一步简答,用maven工具直接package就好
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
mvn package
3.制作镜像
将上边两步的jar包和dockfile文件上传到服务器上,如下
[root@localhost sso-login-web]# ls Dockerfile sso-login-0.0.1-SNAPSHOT.jar
然后创建镜像
[root@localhost sso-login-web]# docker build -t sso-login-web .
Sending build context to Docker daemon 36.41MB
Step 1/6 : FROM java:8
---> d23bdf5b1b1b
Step 2/6 : MAINTAINER fengjian "ifengjian@qq.com"
---> Running in 397cb2ca9c89
Removing intermediate container 397cb2ca9c89
---> 280752bd5c66
Step 3/6 : VOLUME /tmp
---> Running in c914053e62a0
Removing intermediate container c914053e62a0
---> cfd8fa01e7b2
Step 4/6 : ADD sso-login-0.0.1-SNAPSHOT.jar app.jar
---> 1edf9ac2c40a
Step 5/6 : ENTRYPOINT ["sh","-c","java -jar app.jar --spring.profiles.active=$PROFILES "]
---> Running in 91acb800e1c5
Removing intermediate container 91acb800e1c5
---> f7907c327492
Step 6/6 : RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
---> Running in 0aabd7b8a404
Removing intermediate container 0aabd7b8a404
---> 723ea9430d9c
Successfully built 723ea9430d9c
Successfully tagged sso-login-web:latest
成功入上图所示,
[root@localhost sso-login-web]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sso-login-web latest 723ea9430d9c 10 seconds ago 680MB
hkzx-background-api-img latest 0846af4b41db 4 weeks ago 724MB
hkzx-admin-api-img latest 4cc14e855211 4 weeks ago 711MB
<none> <none> b0e0107d563c 4 weeks ago 711MB
<none> <none> 03bf7b7138a0 4 weeks ago 711MB
mysql 5.7 a70d36bc331a 5 weeks ago 449MB
mysql latest c8562eaf9d81 5 weeks ago 546MB
nginx latest f6d0b4767a6c 6 weeks ago 133MB
nginx <none> 4bb46517cac3 6 months ago 133MB
redmine latest c04c9119abaf 6 months ago 542MB
mysql <none> 718a6da099d8 6 months ago 448MB
portainer/portainer latest 62771b0b9b09 7 months ago 79.1MB
hello-world latest bf756fb1ae65 14 months ago 13.3kB
tomcat 8.0.53-jre8-slim 7645ae5b5797 2 years ago 223MB
java 8 d23bdf5b1b1b 4 years ago 643MB
4.运行并选择profile
[root@localhost sso-login-web]# docker run -d -p 8002:80 --name sso-login-web -e PROFILES="prod" sso-login-web:latest
8002是宿主机端口
80是程序里server.port的配置,这里是80端口
以上就是用docker打包springboot项目过程