最近在项目上,接触到SpringCloud Alibaba这一套,还有docker等部署,有些心得,遂整理记录下来
0.配置docker远程连接
vi /lib/systemd/system/docker.service
第一行后加上
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
1. 在项目根目录编写Dockerfile文件
FROM adoptopenjdk/openjdk8-openj9:alpine-slim
MAINTAINER fht@163.com
RUN mkdir -p /cn/fht/demo
WORKDIR /cn/fht/demo
EXPOSE 8200
ADD ./target/demo.jar ./app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
CMD ["--spring.profiles.active=pro"]
关于 FROM adoptopenjdk/openjdk8-openj9:alpine-slim基础镜像,
相比于FROM openjdk:8u181-jre-slim-stretch 主要作用就是
OpenJ9 JVM,通过将 HotSpot 更换为 OpenJ9,内存占用能降低至少 60%,而启动时间也能快 40% 以上,效果立竿见影。
2.为了方便构建可以试用maven插件,引入dockerfile-maven-plugin
注意还有个docker-maven-plugin插件,配置不一样,spotify推荐使用前者
<properties>
<!-- Harbor仓库配置 -->
<!--<docker.registry.host>http://${docker.registry.url}:2375</docker.registry.host>-->
<!--只使用dockerfile:build命令,镜像名就是 cn/demo/项目名:标签-->
<!--使用dockerfile:push命令,需要重新配置仓库推送地址,修改下面的属性-->
<docker.registry.url>cn</docker.registry.url>
<docker.namespace>demo</docker.namespace>
<docker.username>fht</docker.username>
<docker.password>Harbor12345</docker.password>
<docker.plugin.version>1.4.13</docker.plugin.version>
</properties>
<build>
<finalName>${project.name}</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${docker.plugin.version}</version>
<configuration>
<username>${docker.username}</username>
<password>${docker.password}</password>
<repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
<tag>${project.version}</tag>
<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<skip>false</skip>
</configuration>
</plugin>
</plugins>
</build>
我这里只演示dockerfile:build命令,docker.registry.url 如果用Harbor仓库可以改成对应ip
因为docker环境默认为localhost:2375的,故可设置环境变量DOCKER_HOST=tcp://ip:port
或者命令行带上DOCKER_HOST,但是没必要,配置插件就是为了方便,这里不提供例子。
友情提示:这里构建是利用DOCKER_HOST的docker环境执行的,需要docker配置远程2375重启。这里是内网环境,服务器不推荐开放2375,不安全。单机非要配置,可以不配环境变量,本机装个docker环境,构建好镜像。再推送或者docker save,docker load。
3.先package打包,再执行dockerfile:build成功后,DOCKER_HOST机器上就有镜像了。
提示:package和dockerfile:build我这里没有绑定,需分开顺序执行
如需要绑定执行,请在插件标签内添加
<executions>
<execution>
<id>default</id>
<phase>package</phase><!-- 要绑定到的生命周期的阶段 -->
<goals>
<goal>build</goal><!-- 要绑定的插件的目标 -->
</goals>
</execution>
</executions>
4.之后可通过docker images查看镜像
通过docker run创建容器执行
或者编写docker-compose.yml文件 docker-compose up -d创建容器执行