springboot工程
我们在这里找了一个原来的项目工程,项目结构如下:
Dockerfile文件编写
FROMjava:8
VOLUME/tmp
ADDjwordpress-web.jarweb.jar
ENTRYPOINT["java","-Djava.security.egd=file:/dev/./urandom","-jar","/web.jar"]
VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录 项目的 jar 文件作为 “app.jar” 添加到容器的 ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source
制作镜像并发布到阿里云私有仓库
方法一:本地利用docker命令
Maven install
INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] jwordpress-parent .................................. SUCCESS [ 0.215 s]
[INFO] jworpdress-web ..................................... SUCCESS [ 2.308 s]
[INFO] jwordpress-admin ................................... SUCCESS [ 0.035 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.852 s
然后到target 目录下看是否生成了jar文件
然后将jwordpress-web.jar和Dockerfile 放在同一个文件下。执行下面命令 `` docker build -t jwordpress:web-1.0.3.RELEASE .
liuhaihua@liuhaihuadeMacBook-Pro target % docker build -t jwordpress:web-1.0.3.RELEASE .
Sending build context to Docker daemon 51.81MB
Step 1/4 : FROM java:8
---> d23bdf5b1b1b
Step 2/4 : VOLUME /tmp
---> Using cache
---> d27a75b4151c
Step 3/4 : ADD jwordpress-web.jar web.jar
---> 90b04ec165cc
Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/web.jar"]
---> Running in 4663a51a704e
Removing intermediate container 4663a51a704e
---> 312c514e7ecd
Successfully built 312c514e7ecd
Successfully tagged jwordpress:web-1.0.3.RELEASE
查看镜像
推送到阿里云镜像
$ sudo docker login --username=hi35928472@aliyun.com registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/shanbei/web:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/shanbei/web:[镜像版本号]
例子如下图:
登陆阿里云仓库看是否上传成功
方法二:利用maven插件
<plugins>
<!--docker支持插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>${docker.repository.url}/${docker.repository.namespace}/${project.artifactId}:${project.version}</imageName>
<serverId>${docker.repository.serverId}</serverId>
<registryUrl>${docker.repository.url}</registryUrl>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
Setting.xml增加仓库用户名和密码
<servers>
<server>
<id>docker-aliyun-my</id>
<username>xxxx@xxx.com</username>
<password>xxxx</password>
<configuration>
<email>xxx@xxxx.com</email>
</configuration>
</server>
</servers>
常量
<docker.repository.url>registry.cn-qingdao.aliyuncs.com</docker.repository.url>
<docker.repository.namespace>shanbei</docker.repository.namespace>
<docker.repository.serverId>aliyun-docker-hub</docker.repository.serverId>
运行docker build
然后在运行docker push
2种方式都可以,现实中,我们可能需要jenkins来打包部署,所以最好采用第二种方式比较靠谱。
目前100000+人已关注加入我们