- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- SpringBoot+Docker+IDEA實(shí)現一鍵構建+推送、運行、同鏡
由于公司項目需要,需要使用部署微服務(wù)項目,而之前都是使用tomcat部署,操作十分繁瑣。最近正好在學(xué)習Docker,利用Docker容器做部署嘗試
服務(wù)器(我的版本為CentOS:7.9)
開(kāi)發(fā)端
在idea中配置docker
pom.xml
<properties> <!-- docker主機ip(這里填寫(xiě)自己docker所在地址) --> <docker.host>192.168.10.10</docker.host> <!-- harbor倉庫地址(可選,構建鏡像后自動(dòng)上傳到該倉庫) --> <docker.repostory>${docker.host}</docker.repostory> <!-- docker遠程地址, 如果是https協(xié)議則將http換成https即可 --> <docker.remote>http://${docker.host}:2375</docker.remote> <!--項目名,需要和Harbor中的項目名稱(chēng)保持一致 --> <docker.registry.name>library</docker.registry.name> <!-- 默認端口 --> <port>8080</port> </properties> ... <build> <pluginManagement> <plugins> <!--構建鏡像--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.0</version> <configuration> <!--Maven 的配置文件 setting.xml 中增加相關(guān) server 配置,主要配置 Docker registry用戶(hù)認--> <serverId>docker-harbor</serverId> <dockerHost>${docker.remote}</dockerHost> <!-- 鏡像名格式: 倉庫地址/倉庫項目名/當前項目名 (按需修改) --> <imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}</imageName> <baseImage>openjdk:8u282-jdk</baseImage> <maintainer>作者</maintainer> <env> <PORT>8080</PORT> <TZ>Asia/Shanghai</TZ> </env> <!-- 這里的ln和后面的操作是保證時(shí)間同步 --> <runs>mkdir -p /epark/logs && ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone</runs> <volumes>/epark</volumes> <!--suppress UnresolvedMavenProperty --> <entryPoint>["java","-Djava.security.egd=file:/dev/./urandom","-jar","${project.build.finalName}.jar","--server.port=${PORT}"] </entryPoint> <!-- 這里是倉庫地址,不需要可以刪除 --> <registryUrl>http://${docker.repostory}</registryUrl> <!-- 這里指定是否構建成功后自動(dòng)推送到倉庫,不需要可以刪除 --> <pushImage>true</pushImage> <resources> <resource> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- docker-compose的maven插件 --> <plugin> <groupId>com.dkanejs.maven.plugins</groupId> <artifactId>docker-compose-maven-plugin</artifactId> <version>2.5.1</version> <configuration> <!-- 路徑為: 當前項目的上一級(也就是父項目),所以不支持二級以上的子項目 --> <composeFile>${project.basedir}/../docker-compose.yml</composeFile> <apiVersion>1.22</apiVersion> <host>${docker.remote}</host> <envVars> <!-- 默認端口 --> <port>${port}</port> <host>${docker.repostory}</host> <name>${project.build.finalName}</name> <!-- 自定義項目名,支持單鏡像啟動(dòng)多容器的關(guān)鍵 --> <COMPOSE_PROJECT_NAME>${project.build.finalName}-${port}</COMPOSE_PROJECT_NAME> <!-- 這里是證書(shū)配置,如果開(kāi)啟了docker證書(shū),則需要配置 --> <!-- <DOCKER_TLS_VERIFY>1</DOCKER_TLS_VERIFY>--> <!-- <DOCKER_CERT_PATH>D:\docker-ca</DOCKER_CERT_PATH>--> </envVars> </configuration> </plugin> </plugins> </pluginManagement> </build>
注意,${project.artifactId}引用的項目構件ID只能是小寫(xiě)
docker-compose.yml
version: '3.4' services: eparking: # 鏡像 image: ${host}/library/${name}:latest # 容器名 container_name: ${name}-${port} # 開(kāi)機自啟(自選) #restart: always # 環(huán)境配置 environment: # 端口 - PORT=${port} # 端口映射 ports: - "${port}:${port}" # 卷映射,這里日志根據自己項目輸出位置調整 volumes: - "/log/${name}/${port}:/logs/"
配置了倉庫的話(huà)需要配置Maven的settings.xml的賬號密碼
<servers> <server> <id>docker-harbor</id> <username>倉庫用戶(hù)名</username> <password>倉庫密碼</password> </server> </servers>
pom.xml
<!-- 這里配置的端口會(huì )傳入父項目,最終傳入docker-compose.yml和Dockerfile文件 --> <!-- 如果需要單個(gè)鏡像啟動(dòng)多個(gè)容器,改這里的端口再啟動(dòng)就可以了 --> <properties> <port>8082</port> </properties> ... <build> <plugins> <!-- docker插件 --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> </plugin> <!-- docker-compose的maven插件,由于docker插件不支持運行,所以單獨安裝了 --> <plugin> <groupId>com.dkanejs.maven.plugins</groupId> <artifactId>docker-compose-maven-plugin</artifactId> </plugin> </plugins> </build>
如果一切順利maven中會(huì )出現docker和docker-compse插件
先執行docker:build構建,再執行docker-compose:up啟動(dòng)
成功后可以查看docker容器啟動(dòng)情況了,我這里使用的是docker插件
到此這篇關(guān)于SpringBoot+Docker+IDEA實(shí)現一鍵構建+推送、運行、同鏡像多容器啟動(dòng)的文章就介紹到這了,更多相關(guān)SpringBoot+Docker+IDEA一鍵構建內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站