1. 设置服务器Docker支持远程访问
1.1 编辑此文件:
army@studyserver:~$ vim /lib/systemd/system/docker.service
1.2 重新加载配并重启docker
systemctl daemon-reload service docker restart
现在设置完毕了;
2. IDEA开发工具安装Docker插件,并配置远程服务器IP
2.1 Idea 安装docker Integration 插件
2.2 在Idea中创建docker打包环境
2.3 连接远程docker容器。 第二步操作完成后,在idea下方会有个docker的窗口
3. SpringBoot编写Dockerfile和打包配置
3.1 以下是Dockerfile内容:
# 指定基础镜像(必需且为第一条指令,scratch是空白镜像) FROM 192.168.3.16:5000/openjdk:latest # MAINTAINER已经过期,具体参考:https://docs.docker.com/engine/reference/builder/#label LABEL author-name="army.qin@easterphoenix.com" # 为了防止运行时用户忘记将动态文件所保存目录挂载为卷,在 Dockerfile 中,我们可以事先指定某些目录挂载为匿名卷, # 这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。 VOLUME /tmp # 在 COPY 和 ADD 指令中选择的时候,可以遵循这样的原则, # 所有文件复制使用 COPY 指令,仅在需要自动解压缩的场合使用 ADD 指令 ADD target/docker-study.jar app.jar #bash方式执行,使demo-1.0.0.jar可访问 #RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。 #RUN bash -c "touch /docker-study.jar" # EXPOSE 指令仅仅是声明的是运行时容器提供服务的端口 # 用于帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射; #EXPOSE 8080 # JVM参数可选 #CMD ["java","-jar","-Xms64m","-Xmx64m","/docker-study.jar"] #ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
3.2 以下是pom.xml打包配置文件:
<properties> <java.version>1.8</java.version> <docker.repostory>192.168.3.16</docker.repostory> </properties> <build> <!-- 最终Maven本地打包出来的jar包名称 --> <finalName>${project.artifactId}</finalName> <!--<defaultGoal>package</defaultGoal>--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <!-- GitHub: https://github.com/spotify/docker-maven-plugin --> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.0</version> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--<serverId>server-registry</serverId>--> <registryUrl>http://${docker.repostory}:5000</registryUrl> <pushImage>true</pushImage> <!-- 远程镜像名称 --> <imageName>${docker.repostory}:5000/${project.artifactId}:${project.version}</imageName> <forceTags>true</forceTags> <imageTags> <imageTag>${project.version}</imageTag> <imageTag>latest</imageTag> </imageTags> <dockerHost>http://${docker.repostory}:22375</dockerHost> <dockerDirectory>${project.basedir}</dockerDirectory> <resources> <resource> <targetPath>/target</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
4. IDEA命令行执行以下,自动打包并上传到远程服务器启动。
mvn clean package -Dmaven.test.skip=true
查看服务器镜像 docker images
查看正在运行镜像 docker ps -a