准备项目
准备springboot,创建接口端口号7781
服务器准备
vi /lib/systemd/system/docker.service
替换
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
systemctl daemon-reload
service docker restart
开放端口号
firewall-cmd --zone=public --add-port=2375/tcp --permanent
重启查询
firewall-cmd --reload
firewall-cmd --query-port=2375/tcp
访问 http://docker服务器ip:2375/version
安装docker插件
下面多出了窗口
POM
<properties>
<java.version>1.8</java.version>
<docker.image.prefix>myobject</docker.image.prefix>
</properties>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--使用docker-maven-plugin插件-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<!--镜像名称 Ryan-->
<!-- 镜像名称必须全部小写 -->
<imageName>${docker.image.prefix}/${project.name}</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!--基础镜像jdk 1.8-->
<baseImage>java</baseImage>
<!--制作者提供本人信息-->
<maintainer>中国 yyds</maintainer>
<!--切换到/ROOT目录-->
<workdir>/ROOT</workdir>
<!--<cmd>["java", "-version"]</cmd-->
<entryPoint>["java","-jar","${project.build.finalName}.jar"]</entryPoint>
<!--指定远程docker api地址-->
<dockerHost>http://192.168.9025852.110:2375</dockerHost>
<!--复制jar包到docker容器指定目录位置-->
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件,${project.build.finalName}.jar表示打包后的jar文件-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<executions>
<!-- package之前清除上一次构建的image -->
<execution>
<id>remove-image</id>
<phase>package</phase>
<goals>
<goal>removeImage</goal>
</goals>
</execution>
<!--当执行mvn package时,执行:mvn package docker:build-->
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
编译
1.clear 2.package
dockerfile 部署
#指定基础镜像,在其上进行定制
FROM java:8
ENV LANG C.UTF-8
# 统一容器与服务器时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层
VOLUME /tmp
# 复制打包后的jar名称 重命名为app.jar
ADD demo-0.0.1-SNAPSHOT.jar app.jar
#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 7787
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","-c"]