springboot項目打包docker鏡像並且上傳到阿里雲遠程倉庫
文章目錄
1, docker開啓遠程訪問
1-1 筆者docker安裝在ubnutu上(Ubuntu 15.04及更高版本)
- 創建/etc/systemd/system/docker.service.d目錄
sudo mkdir /etc/systemd/system/docker.service.d
- 創建一個/etc/systemd/system/docker.service.d/http-proxy.conf文件。
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
- 刷新配置
sudo systemctl daemon-reload
- 重新啓動docker守護進程
sudo systemctl restart docker
- 重啓docker
sudo systemctl restart docker
2, maven插件
-
版本信息等變量
<!--docker的maven插件版本號--> <docker-maven-plugin.version>1.2.0</docker-maven-plugin.version> <!--部分鏡像名稱--> <docker.image.prifx>tiger-cloud-platform</docker.image.prifx> <!--dockerFile中的父鏡像--> <docker.baseImage>mrsinham/alpine-oraclejdk8</docker.baseImage> <!--遠程docker地址--> <docker.host>http://192.168.8.244:2375</docker.host> <!--dockerFile中的volumes--> <docker.volumes>/tmp</docker.volumes> <!--dockerFile中的ENTRYPOINT--> <docker.java.security.egd>-Djava.security.egd=file:/dev/./urandom</docker.java.security.egd> <!--應用啓動參數--> <docker.java.opts>-Xms128m -Xmx128m</docker.java.opts> <!--遠程阿里雲域名--> <docker.repository.url>registry.cn-beijing.aliyuncs.com</docker.repository.url> <!--阿里雲中的命名空間--> <docker.repository.namespace>itpengwei</docker.repository.namespace> <!--在本地seting裏面配置的阿里雲倉庫用戶名密碼--> <docker.repository.serverId>itpengwei</docker.repository.serverId>
-
maven本地倉庫變量指定阿里雲遠程倉庫命名空間的訪問密碼
<servers>
<server>
<!--maven的pom中可以根據這個id找到這個server節點的配置-->
<id>itpengwei</id>
<!--這裏是在阿里雲註冊的賬號-->
<username>xxxx</username>
<!--這裏是在阿里雲註冊的密碼-->
<password>xxxx</password>
<configuration>
<!--註冊阿里雲填寫郵箱-->
<email>[email protected]</email>
</configuration>
</server>
<servers/>
- mavne插件配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<forceTags>true</forceTags>
<!-- 是否上傳鏡像,如果沒配置則需要mvn clean package docker:bulild -DpushImage-->
<pushImage>true</pushImage>
<!-- 鏡像名稱--> <imageName>${docker.repository.url}/${docker.repository.namespace}/${docker.image.prifx}:${project.artifactId}</imageName>
<!--遠程倉庫的用戶名密碼-->
<serverId>${docker.repository.serverId}</serverId>
<!-- 遠程倉庫地址-->
<registryUrl>${docker.repository.url}</registryUrl>
<!--遠程docker地址-->
<dockerHost>${docker.host}</dockerHost>
<!--父鏡像-->
<baseImage>${docker.baseImage}</baseImage>
<!--文件存儲目錄-->
<volumes>${docker.volumes}</volumes>
<env>
<JAVA_OPTS>${docker.java.opts}</JAVA_OPTS>
</env>
<entryPoint>["sh","-c","java $JAVA_OPTS ${docker.java.security.egd} -jar /${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>
4,驗證
通過命令mvn clean package docker:build命令執行完就能看到docker中已經有鏡像了,並且阿里遠程倉庫也有了