本文是手动模式,可以移步 Intellij IDEA 集成 Docker 发布 使用 Intellij 集成Docker 发布,比较方便
pom 文件
<groupId>com.vipsoft.boot</groupId> <artifactId>vipsoft-web-boot</artifactId> <version>1.0</version> <packaging>jar</packaging> <!-- 统一管理 jar 包版本 --> <properties> <boot.version>2.2.8.RELEASE</boot.version> <java.version>1.8</java.version> <docker.image.prefix>vipsoft</docker.image.prefix> </properties> <build> <plugins> <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.0</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- Docker maven plugin --> </plugins> </build>
编辑 Dockerfile 文件
# Docker image for SpringBoot file run # VERSION 0.0.1 # Author: eangulee # 基础镜像使用java FROM java:8 # 作者 MAINTAINER Jimmy <Jimmy.Chen@vipsoft.com.cn> # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 将jar包添加到容器中并更名为app.jar ADD vipsoft-web-boot-1.0.jar app.jar # 运行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
2.将编译好的jar包和 dockerfile 传到服务器上,我这边用的目录为 /opt/vipsoft
#sftp > put 本地文件路径 远程服务器路径 sftp> put /Users/jimmy/Projects/VipBoot/VipSoft-Web-Boot/src/main/docker/Dockerfile /opt/vipsoft sftp> put /Users/jimmy/Projects/VipBoot/VipSoft-Web-Boot/target/vipsoft-web-boot-1.0.jar /opt/vipsoft
#sftp > put 本地文件路径 远程服务器路径
sftp> put /Users/jimmy/Projects/VipBoot/VipSoft-Web-Boot/src/main/docker/Dockerfile /opt/vipsoft
sftp> put /Users/jimmy/Projects/VipBoot/VipSoft-Web-Boot/target/vipsoft-web-boot-1.0.jar /opt/vipsoft
编译docker 文件
[root@centos-linux vipsoft]# docker build -t vipsoft .
#运行 docker [root@centos-linux vipsoft]# docker run --name vipsoft8081 -d -p 8081:8080 vipsoft --name 容器名称,后面停止、启动、删除,都可以直接用这个名字 -d 参数是让容器后台运行 -p 是做端口映射,此时将服务器中的8080端口(对外访问端口)映射到容器中的8080端口(项目设置端口)
访问测试