一、docker服务器侧监听配置
centos7安装配置docker参考《centos下docker安装》
1
| vim /usr/lib/systemd/system/docker.service,配置完端口,下面的idea中才能连接成功。
|
默认使用2375端口监听,如果开有防火墙,需要把端口添加到例外。
1
| ExecStart=``/usr/bin/dockerd` `-H fd:``//` `--containerd=``/run/containerd/containerd``.sock -H tcp:``//0``.0.0.0:2375
|
二、插件安装和配置

配置docker连接,一定要显示Connection succcessful:

三、springboot项目,增加docker插件和Dockerfile配置
- 依赖包和配置

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version> 1.2.1</version> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <imageName>${project.artifactId}</imageName> <imageTags> <imageTag>latest</imageTag> </imageTags> <dockerDirectory>${project.basedir}</dockerDirectory> <dockerHost>http://10.245.202.222:2375</dockerHost> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
|

我一开始建了一个docker的文件夹,将dockerfile放到那里,实践证明不行,不允许往上层路径寻找jar包。
\2. Dockerfile配置

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #指定基础镜像,在其上进行定制 FROM java:8
#维护者信息 MAINTAINER zhouyu <[email protected]>
#这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层。 VOLUME /tmp
#复制上下文目录下的target/demo-1.0.0.jar 到容器里 COPY target/freemarker-page-demo-1.0-SNAPSHOT.jar demo-1.0.0.jar
#bash方式执行,使demo-1.0.0.jar可访问 #RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。 RUN bash -c "touch /demo-1.0.0.jar"
#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务 EXPOSE 8080
#指定容器启动程序及参数 <ENTRYPOINT> "<CMD>" ENTRYPOINT ["java","-jar","demo-1.0.0.jar"]
|

执行mvn package成功
\3. 创建容器


注意bind ports,我这里是8080:8088,前面是服务器向外暴露的端口号,8088则是application.yml里配置的应用端口号,我这里对应的tomcat端口号。
四、主要问题解决
1.xxxx-1.0-SNAPSHOT.jar中没有主清单属性 ,造成发布失败。
主要是因为springboot没有配置maven package插件,pom中新增plugin

1 2 3 4 5 6 7 8 9 10 11
| <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
|

- 容器时间和宿主时间不一致
在Dockerfile最后一行增加:
1 2 3
| #设置时区 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' >/etc/timezone \
|