創建Dockerfile
首先將項目打好jar包,然後創建Dockerfile,內容如下:
# 基礎鏡像使用java
FROM java:8
# VOLUME 指定了臨時文件目錄爲/tmp。
# 其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,並鏈接到容器的/tmp
VOLUME /tmp
# 將jar包添加到容器中並更名爲app.jar
ADD jar包名稱.jar app.jar
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/app.jar","--spring.profiles.active=test","> /log/app.log"]
解釋下這個配置文件:
VOLUME 指定了臨時文件目錄爲/tmp。其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,並鏈接到容器的/tmp。該步驟是可選的,如果涉及到文件系統的應用就很有必要了。/tmp目錄用來持久化到 Docker 數據文件夾,因爲 Spring Boot 使用的內嵌 Tomcat 容器默認使用/tmp作爲工作目錄。
ENTRYPOINT 中的spring.profiles.active=test
是引用多環境配置的yml,不需要的話可以去掉。
如果是第一次打包,它會自動下載java 8的鏡像作爲基礎鏡像,以後再製作鏡像的時候就不會再下載了。
部署文件
將jar包和Dockerfile拷到同一目錄下,我這邊放在/opt/docker/docker-demo
下
製作鏡像
執行一下命令製作鏡像,-t後面是鏡像名稱,別忘了最後有一個.
docker build -t docker-demo .
使用docker images
查看一下鏡像
-
解決下載鏡像連接超時問題
如果構建鏡像時下載資源出現“net/http: TLS handshake timeout”超時問題,請參考博文解決Docker構建鏡像時“net/http: TLS handshake timeout”問題
啓動容器
docker run -d -p 8100:12007 --name demo-container docker-demo
-d:後臺運行
-p:端口映射,格式是外部訪問端口:容器內項目端口
–name: 容器名稱 鏡像名稱
如果需要添加容器hosts,就在run後面添加--add-host
,例如
docker run --add-host=myhost:192.168.3.9 -d -p 8001:80 --name demo-container docker-demo
直接瀏覽器訪問: http://服務器ip地址:8100/…