好記性不如爛筆頭,寫筆記是為了回頭看的。
誰要是不小心搜了看了,如有不足之處敬請諒解。
一、准備工作
虛擬機centos7.X,docker1.3.X,Win10 Idea2018.1
默認Idea已經下載了Docker插件
默認虛擬機docker已經裝了jdk
二、開始
1. 打開docker配置文件(docker把端口號2375開放,下面兩種方法都不夠安全,但是測試用用還可以,正式的就不行。)
[root@huangsz ~]# vim /usr/lib/systemd/system/docker.service
在ExecStart=/usr/bin/dockerd-current 后面加上
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
如下圖所示:
或者
修改一下內容:
[root@huangsz ~]# vim /etc/sysconfig/docker
2. 重新加載配置文件,重啟docker
systemctl daemon-reload
systemctl start docker
3. 查看進程
netstat -tulp
PS:Centos7沒有netstat,所以要先下載。
yum install net-tools
4. 防火牆開放2375端口號
[root@huangsz ~]# firewall-cmd --zone=public --add-port=2375/tcp --permanent
重啟防火牆
[root@huangsz ~]# firewall-cmd --reload
-------------------------- 分割線 割割割割割割割-----------------
Idea連接虛擬機docker
打開小扳手(setting)找到docker,輸入虛擬機ip,不出意外會連接成功的。
5. Springboot項目添加docker-maven-plugin插件
<!--使用docker-maven-plugin插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--將插件綁定在某個phase執行--> <executions> <execution> <id>build-image</id> <!--將插件綁定在package這個phase上。也就是說,用戶只需執行mvn package ,就會自動執行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的鏡像名--> <imageName>hsz1992/${project.artifactId}</imageName> <!--指定標簽--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!-- 指定 Dockerfile 路徑--> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <!--指定遠程 docker api地址--> <dockerHost>http://192.168.159.130:2375</dockerHost> <!-- 這里是復制 jar 包到 docker 容器指定目錄配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路徑 此處配置的 即對應 target 目錄--> <directory>${project.build.directory}</directory> <!-- 需要包含的 jar包 ,這里對應的是 Dockerfile中添加的文件名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
6. 創建docker文件夾和Dockerfile文件,docker要在src/main里
Dockerfile的內容
FROM java:8 VOLUME /tmp ADD test-mybatis-0.0.1-SNAPSHOT.jar app.jar RUN bash -c 'touch /app.jar' EXPOSE 8082 ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
FROM:選擇的jdk
EXPOSE 是端口號和server.port=8082一致
ADD:第一個jar是打包的項目名 第二個是別名
7.在idea的右邊找到Maven Projects,找到Lifecycle,雙擊package打包,第一次打包比較慢,需要騷騷的等等。
看到以下就說明成功了
8. 創建容器,找到剛剛生成的鏡像,點擊創建容器
Image ID 是打包生成的那個鏡像
Container name 容器名字隨便取
Bind ports 8080是docker對外開放的端口,8082是項目端口(個人理解)
9. 設置好后,啟動容器,啟動成功后去虛擬機查看是否啟動成功
可以看到,容器啟動成功。
10.訪問虛擬機ip+端口號
http://192.168.159.130:8080/test
能訪問,8080是設置容器時對外開放的端口號,而項目的端口是8082
11. Docker查看正在啟動容器docker ps,查看所有容器 docker ps -a,查看鏡像docker images
12.以上步驟就把springboot通過docker遠程部署在虛擬機的docker里了。但是有一個問題我沒有解決,就是每次打包后,需要把容器刪除后再啟動容器才能起作用。如果不刪容器直接啟動的話,還是原來的內容。
13. 查看日志,docker logs -f -t --tail 行數 容器id或者容器名
[root@huangsz ~]# docker logs -f -t --tail 50 499189e519a0