一、打包Docker推送到私服Harbor
1、開啟Docker服務器遠程訪問
# 首先查看docker配置文件所在位置
systemctl status docker
# 會輸出如下內容:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-12-16 17:51:51 CST; 23h ago
Docs: https://docs.docker.com
Main PID: 173507 (dockerd)
# 修改配置
vi /usr/lib/systemd/system/docker.service
# 添加 -H tcp://0.0.0.0:2375
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
# 添加harbor鏡像地址
vi /etc/docker/daemon.json
{
"insecure-registries": ["192.168.3.15:8889"]
}
# 重新加載docker配置並重啟docker服務
systemctl daemon-reload
systemctl restart docker.service
2、IDEA連接Docker
3、通過IDEA遠程管理Docker
4、Harbor創建IDEA對應上傳項目名稱
5、在要打包的項目根目錄下創Dockerfile文件
FROM openjdk:8-jre-alpine
LABEL author="Scode<stc66@qq.com>"
WORKDIR /usr/local/lib/
ADD ./target/szbxl-user-service-1.0.jar ./szbxl-user-service-1.0.jar
EXPOSE 802
ENTRYPOINT ["java","-jar","/szbxl-user-service-1.0.jar"]
6、配置spring-boot-maven-plugin Docker打包,鏡像名稱要包含Harbor地址及項目名稱,不然無法成功推送至Harbor
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<!--jdk9以上需要-->
<Add-Opens>java.base/java.lang java.base/java.lang.reflect</Add-Opens>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<!--配置鏡像名稱-->
<name>192.168.3.15:8889/szbxl/${project.name}:${project.version}</name>
<!--鏡像打包完成后自動推送到鏡像倉庫-->
<publish>true</publish>
<env>
<BPE_DELIM_JAVA_TOOL_OPTIONS xml:space="preserve"> </BPE_DELIM_JAVA_TOOL_OPTIONS>
<BPE_APPEND_JAVA_TOOL_OPTIONS>-Xms256m</BPE_APPEND_JAVA_TOOL_OPTIONS>
<BPE_APPEND_JAVA_TOOL_OPTIONS>-Xmx256m</BPE_APPEND_JAVA_TOOL_OPTIONS>
<BPE_APPEND_JAVA_TOOL_OPTIONS>-Xss256k</BPE_APPEND_JAVA_TOOL_OPTIONS>
</env>
</image>
<docker>
<!--Docker遠程管理地址-->
<host>http://192.168.3.15:2375</host>
<!--不使用TLS訪問-->
<tlsVerify>false</tlsVerify>
<!--Docker推送鏡像倉庫配置-->
<publishRegistry>
<!--推送鏡像倉庫用戶名-->
<username>admin</username>
<!--推送鏡像倉庫密碼-->
<password>123456</password>
<!--推送鏡像倉庫地址-->
<url>http://192.168.3.15:8889</url>
</publishRegistry>
</docker>
</configuration>
</plugin>
</plugins>
</build>
7、雙擊spring-boot:build-image即可打包並上傳到私服,打包過程中會從github下載很多插件,如果失敗請多次重試
8、在IDEA里創建容器並運行
9、設置 IDEA VM支持查看容器中文日志(-Dfile.encoding=utf-8)
10、測試支持JDK9以上版本
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>
--add-opens java.base/java.time=ALL-UNNAMED
${surefireArgLine}
</argLine>
</configuration>
</plugin>
二、IDEA打包鏡像到Docker Desktop並上傳到阿里雲鏡像
1、Windows安裝Docker Desktop並上開啟2375連接
2、IDEA連接Docker
3、IDEA編輯運行配置並添加Dockerfile配置:
clean package -U -DskipTests
--提示報錯:Failed to deploy Not connected to docker
--IDEA右鍵單擊快捷鍵,選擇 " 管理員取得所有權"
#命令
docker run -d --restart=always -p 801:801 --name tumake-auth -v /apps/tumake-auth/logs:/apps/logs -v /apps/tumake-auth/tmp:/tmp -v /apps/tumake-auth/upload:/apps/upload --privileged=true registry.cn-hangzhou.aliyuncs.com/tumake/tumake-auth-dev:1.0
docker run -d --restart=always -p 802:802 --name tumake-user-service -v /apps/tumake-user-service/logs:/apps/logs --privileged=true registry.cn-hangzhou.aliyuncs.com/tumake/tumake-user-service-dev:1.0
docker run -d --restart=always -p 800:800 --name tumake-gateway -v /apps/tumake-gateway/logs:/apps/logs --privileged=true registry.cn-hangzhou.aliyuncs.com/tumake/tumake-gateway-dev:1.0
4、運行Docker生成鏡像並在IDEA終端通過阿里雲鏡像push上傳命令上傳Docker
5、在服務器下載阿里雲鏡像並運行