(1)手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚 拟机并拷贝至JDK容器。
(2)通过Maven插件自动部署。 对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这里学习如何自动部署,这也是企业实际开发中经常使用的方法。
Maven插件自动部署步骤:
vi /lib/systemd/system/docker.service
其中ExecStart=后添加配置 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654
修改后如下:
systemctl daemon‐reload
systemctl restart docker
docker start registry
1.8
10.211.55.23:5000
org.springframework.boot
spring-boot-maven-plugin
com.spotify
docker-maven-plugin
1.0.0
${docker.registry}/${project.artifactId}
${project.basedir}
zhangfuli/jdk1.8
["java", "‐jar", "/${project.build.finalName}.jar"]
/
${project.build.directory}
${project.build.finalName}.jar
http://10.211.55.23:7654
Dockerfile文件内容:
FROM zhangfuli/jdk1.8
MAINTAINER myCrawler
ENTRYPOINT ["java", "-jar", "/app.jar"]
# Add the service itself
ADD target/crawler-first-1.0-SNAPSHOT.jar /app.jar
mvn install
mvn clean package docker:build 只执行 build 操作
mvn clean package docker:build -DpushImage 执行 build 完成后 push 镜像
mvn clean package docker:build -DpushImageTag 执行 build 并 push 指定 tag 的镜像
注意:image的命名规范 only [a-z0-9-_.]
不要大写字母
此步骤遇到的问题:
1.http: server gave HTTP response to HTTPS client
原因:Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误。
解决:在docker server启动的时候,增加启动参数,默认使用HTTP访问
打开
vim /usr/lib/systemd/system/docker.service
在ExecStart后面添加--insecure-registry ip:5000
修改好后重启docker 服务
systemctl daemon-reload
systemctl restart docker
docker images
浏览器访问 http://10.211.55.23:5000/v2/_catalog ,输出
{
"repositories": [
"crawler-first"
]
}
docker run ‐di ‐‐name=base ‐p 9001:9001
10.211.55.23:5000/crawler-first:1.0‐SNAPSHOT
相关连接:
Maven 插件之 docker-maven-plugin 的使用
报错http: server gave HTTP response to HTTPS client