java-web系列(二)---以dockerfile的方式釋出java-web專案
阿新 • • 發佈:2018-12-26
前言
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服務對應在該虛擬機器中的暴露埠。
在test
連線中新建資料extensible
,然後執行extensible.sql
轉儲檔案來填充測試資料,即該java-web專案的環境已經搭建成功。
IDEA中通過DockerFile檔案釋出該web專案
1.在IDEA中安裝Docker integration的輔助外掛
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容器的配置引數如下:
測試專案是否成功釋出
1.出現如下圖,則說明成功啟動該容器。
2.在瀏覽器或Postman中輸入相應的URL出現如下結果,則說明web專案正常執行。
趟過的坑總結:
1.本地測試時,專案和Mysql是同一ip—(localhost即127.0.0.1),但是在docker容器中用localhost是找不到相應的Mysql服務的。因此需要更改配置如下圖: