利用Docker手動構建WebLogic鏡像的步驟
- 2020 年 3 月 27 日
- 筆記
info
我的Docker
環境信息如下:
[root@localhost ~]# docker info -f " OSType: {{.OperatingSystem}} {{.Architecture}} {{.KernelVersion}} DockerVersion: {{.ServerVersion}} Mirrors: {{range .RegistryConfig.Mirrors}} {{.}}{{end}}"
OSType: CentOS Linux 7 (Core) x86_64 3.10.0-957.21.3.el7.x86_64 DockerVersion: 19.03.8 Mirrors: http://ovfftd6p.mirror.aliyuncs.com/ http://registry.docker-cn.com/ http://docker.mirrors.ustc.edu.cn/ http://hub-mirror.c.163.com/
Docker安裝
# 依賴 yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加倉庫 yum-config-manager --add-repo https: //download.docker.com/linux/centos/docker-ce.repo 594 yum-config-manager --enable docker-ce-nightly yum-config-manager --enable docker-ce-test yum-config-manager --disable docker-ce-nightly # 安裝 yum -y install docker-ce docker-ce-cli containerd.io
在dockerhub中尋找Weblogic鏡像成品
在下搭這個環境只是為了調試,沒想搞這麼麻煩,所以有成品最好,在dockerhub中找到兩個下載量比較多的,第一個是官方的:
但是可惜了,鏡像太大了,一個也沒有下載成功,都是到一半就卡住不動了,只能自己製作一個了。
官方有構建Weblogic
鏡像的Dockerfile
以及一些說明:點擊查看。
這裡貼一下官方的文檔:
全英文的,寫的也不算很詳細吧,下面就通過這個文檔來手動構建一下。
構建JAVA-8鏡像
因為Weblogic
基於Java
,所以需要用JDK
,上面文檔中說使用../OracleJava/java-8可以構建出JDK
鏡像,這裡如果可以直接命令docker pull store/oracle/serverjre:8
把做好的鏡像脫下來就不用這麼麻煩了。
如果和我一樣,下載不下載成品,只能手動構造了。oracle/docker-images這個倉庫里包含了oracle
提供的所有產品Dockerfile
,沒必要全git clone
下來,推薦使用downgit工具把java-8
和weblogic
目錄下下來即可。
然後這是後面構建weblogic
的時候才知道的事情,需要在Dockerfile
中找到對應JDK
安裝包的文件名,然後到官網或別的地方去下載同名的包,和Dockerfile
放到同級目錄下。
這裡使用的
server-jre-8u241-linux-x64.tar.gz
: 下載地址
然後執行build.sh
構建,一般不會出什麼問題。
或者將Dockerfile
的內容複製出來,在Linux
中新建一個同名的文件,把內容複製進去,然後當前目錄執行docker build -t oracle/serverjre:8 .
也可以構建出來。
下載Weblogic二進制包
傻傻的試了半天buildDockerImage.sh
,結果一直報錯checksum
什麼的,看了一遍腳本內容還有重新看了一遍上面的英文README
才發現需要自己去下載weblogic
安裝包,附上下載地址。
weblogic
會有3個分支版本:developer
、generic
、infrastructure
,在./dockerfiles/12.2.1.3/
目錄下從文件後綴可以看出對應的Dockerfile
文件,例如generic
對應Dockerfile.generic
。
沒細研究它們的區別,簡單看了一下generic
比較全,帶示例什麼的,大小800M
,developer
小很多,只有231M
,試了一下網速跑滿了,就把兩個都下載下來構建了一遍。
將下載下來的文件,不需要解壓,放到和對應版本的Dockerfile
文件同級目錄下。
構建Weblogic12鏡像
我的目標版本是12.2.1.3 generic
,所以使用sh buildDockerImage.sh -v 12.2.1.3 -b
。
腳本本身沒有什麼問題,但是到Percent Complete
這裡一直報錯,總是到40%
進程就掛掉了,這裡試了很多次,發現到40%
的時候電腦風扇呼呼的,看了一下內存佔用大概知道為什麼了,我的虛擬機分配內存只有512M
,嘗試擴到2G
,構建weblogic
鏡像順利完成。
運行使用
以前沒接觸過這個中間件,所以不太了解怎麼使用。直接docker run -d oracle/weblogic
之後發現並不能將其運行起來。
又研究了一下README
後發現運行需要基於已經有的oracle/weblogic:12.2.1.3-generic
再構建一個實例鏡像,官方提供了一些sample
,我選擇的是12213-domain,其他的也試了試,沒能構建成功。
因為我這裡想用generic
版本,所以需要改一下示例目錄的Dockerfile
文件:
構建命令:docker build -f Dockerfile -t 12213-weblogic-domain-in-volume .
。
在製作容器運行之前,需要修改properties
目錄里的兩個配置文件,重要的信息已經用紅圈標註了,需要注意的是DOMAIN_HOST_VOLUME
指定的目錄需要在本機存在,該目錄會映射容器內示例目錄到本地,ADMIN_HOST
指定容器名稱。
然後修改run_admin_server.sh
可以構造並運行一個名為weblogic
的容器,此時如果防火牆沒有限制的話,訪問http://your-ip:7001/console應該OK了。
開啟調試端口
上面的腳本默認不會啟動weblogic
的調試端口8453
,為了之後的測試,這裡嘗試開啟。
首先,將前面創建的容器刪除docker stop weblogic && docker container rm weblogic
。
然後修改示例目錄12213-domain
中run_admin_server.sh
的最後一行,將8453
端口映射出來。
然後,嘗試連接一下nc -v your-ip 8453
,如果提示connected
就可以了,如果不行則繼續執行以下步驟。
前面將容器中的示例目錄映射到了本地,在本地/root/domain
下可以找到base_domain
目錄,目錄結構如下:
修改bin/setDomainEnv.sh
,找到最合適的地方,如何判斷最合適,一句話就是最先使用debugFlag
之前給debugFlag
賦值之後,加上一句exoprt debugFlag="true"
。
然後重啟容器docker restart weblogic
後成功開啟調試。