1. 程式人生 > >java-web系列(二)---以dockerfile的方式釋出java-web專案

java-web系列(二)---以dockerfile的方式釋出java-web專案

前言

extensible專案當前功能模組如下:

如對該專案有疑問,可在我的部落格/github下面留言,也可以以郵件的方式告知。
我的聯絡方式:[email protected]

Docker相關環境搭建

1.空白虛擬機器的“傻瓜式”安裝

  • 安裝VMware Workstation
  • 安裝虛擬機器(CentOS 7.4)

相關的平臺及輔助工具和CentOS-7.4的映象都在我的百度網盤,提取碼為hksw。安裝過程非常簡單,這裡就不再贅述了。

Docker相關

  • 安裝ce版docker
# 新增ifconfig功能
yum install net-tools.x86_64
# 保證yum是最新版本
yum update # 安裝wget工具 yum install wget # 安裝ce版docker wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce # 檢視安裝docker的版本 docker version
  • 啟動docker的遠端訪問服務
# 開啟docker服務
systemctl start docker
# 開機自啟docker服務
systemctl enable docker
# yum安裝vim工具
yum install vim
# 將docker服務暴露在2375埠,需要編輯docker.service檔案中[service]的ExecStart屬性如下
vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock # 過載docker的配置,重啟docker服務,就可以在本地電腦通過訪問伺服器2375埠,使用docker服務 systemctl daemon-reload systemctl restart docker
  • java-web專案的docker環境搭建
# 拉取JDK8對應的docker環境(java:8)
docker pull java:8
# 拉取最新版本的mysql
docker pull mysql
# 基於mysql映象,啟動容器mysql-master,(host:docker)=(3306:3306),root賬號密碼為root
docker run --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql # 在命令列中通過如下命令可以測試是否能夠使用mysql服務 # 進入mysql-master容器內部,可以使用mysql docker exec -it mysql-master bash # 登入---密碼為root mysql -u root -p

在navcat中測試聯通,說明該java-web專案的docker環境搭建成功。

這裡的192.168.139.141是該虛擬機器的ip地址(實際情況,需要通過ifconfig命令獲取對應的ip地址),3306是mysql服務對應在該虛擬機器中的暴露埠。

docker-mysql

test連線中新建資料extensible,然後執行extensible.sql轉儲檔案來填充測試資料,即該java-web專案的環境已經搭建成功。

IDEA中通過DockerFile檔案釋出該web專案

1.在IDEA中安裝Docker integration的輔助外掛

docker輔助外掛

2.在專案的根目錄中新建Dockerfile檔案如下:

# 基於java:8映象進行擴充套件
FROM java:8
# 指定製作該映象的作者和聯絡方式
MAINTAINER zhenye [email protected]
# 指定容器內程序對外開放的埠
EXPOSE 8090
# 定義資料卷位置---存放容器共享檔案的位置
VOLUME /tmp
# 修改映象的命令---安裝或配置,每一步會建立一個新的映象層
RUN mkdir /extensible
RUN mkdir /extensible/files
RUN mkdir /extensible/logs
# 將maven打成的jar包複製到映象目錄中(相對路徑---預設"."就是Dockerfile所在目錄)
ADD target/extensible-0.0.1-SNAPSHOT.jar extensible.jar
# 指定容器啟動時,需要執行的命令(執行該jar程式)
ENTRYPOINT java -server -jar extensible.jar

3.編輯該extensible容器的配置引數如下:

docker容器引數配置

測試專案是否成功釋出

1.出現如下圖,則說明成功啟動該容器。

docker啟動日誌

2.在瀏覽器或Postman中輸入相應的URL出現如下結果,則說明web專案正常執行。

web測試日誌

趟過的坑總結:

1.本地測試時,專案和Mysql是同一ip—(localhost即127.0.0.1),但是在docker容器中用localhost是找不到相應的Mysql服務的。因此需要更改配置如下圖:

專案配置檔案