一、开启Docker远程访问
CentOS7中Docker安装成功后,需要开启Docker的远程访问功能,修改/usr/lib/systemd/system/docker.service文件
加入-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
配置完成后,保存退出,重启Docker
systemctl daemon-reload
service docker restart
二、IDEA配置
首先idea安装docker插件:点击File->Settings->Plugins->Browse Repositories
这里是安装完成后的页面,未安装时点击install即可。
安装完成后重启IDEA,点击File->Settings->Build,Execution,Deployment->Docker,配置远程Docker地址
出现connection successful即表示连接成功。
三、项目配置
配置DockerFile并将其放在项目根目录下
DockerFile:
##使用 JDK 8 环境为基础镜像,如果镜像不是本地的将会从 DockerHub 进行下载
FROM openjdk:8-jdk-alpine
##指向了一个 /tmp 的目录,由于 Spring Boot 使用内置的 Tomcat 容器,Tomcat 默认使用 /tmp 作为工作目录,这个命令的效果是:在宿主机的 /var/lib/docker 目录下创建一个临时文件并把它链接到容器中的 /tmp 目录。
VOLUME /tmp
# 作者信息
MAINTAINER "Zson"
# 暴露8080端口
EXPOSE 8080
# 添加变量,如果使用dockerfile-maven-plugin,则会自动替换这里的变量内容
ARG JAR_FILE=target/system-0.0.1-SNAPSHOT.jar
# 往容器中添加jar包
ADD ${JAR_FILE} app.jar
# 启动镜像自动运行程序
# ENTRYPOINT ["java","-Xms512m","-Xmx1024m","-Xss1024K","-XX:PermSize=512m","-XX:MaxPermSize=1024m","-XX:-OmitStackTraceInFastThrow","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]
##Dockerfile中直接能够运行的命令
##保证awt的使用
RUN apk add fontconfig
RUN apk add --update ttf-dejavu
RUN fc-cache --force
##保证容器的时区相同
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
##保证log日志的时区相同
RUN echo "Asia/Shanghai" > /etc/timezone
然后在pom.xml中配置maven插件:
<!-- Docker容器远程部署 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<!-- 当执行mvn package时,同时执行docker:build -->
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- Docker主机地址 -->
<dockerHost>http://192.168.91.129:2375</dockerHost>
<!-- Docker镜像名称 -->
<imageName>system</imageName>
<!-- 镜像的Tags -->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!-- 在每次新的构建上覆盖镜像tags -->
<forceTags>true</forceTags>
<!-- DockerFile的位置 -->
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<!-- jar的位置和名称 -->
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
四、打包运行
IDEA中直接点击maven中的package即可在Linux服务器上构建镜像:
运行有两种方式:
1.直接在Linux服务器上运行 docker run;
2.使用IDEA的Docker插件: