關於這項作業
請在 Docker Hub 中使用官方 WebSphere® Application Server for Developers Liberty 映像檔。
這個儲存庫中有多個可用的映像檔。具有 beta 標籤的映像檔含有每月測試版的安裝保存檔內容。其他映像檔都是以最新的通用修正套件為基礎。
kernel 映像檔只包含
Liberty 核心,沒有其他任何執行時期特性。您可以使用這個映像檔,或是使用只含有特定應用程式所需特性的自訂建置映像檔。舉例來說,下列 Dockerfile 範例 Snippet
是從這個映像檔開始,會複製到
server.xml 檔(其中列出應用程式需要的特性),然後使用
installUtility 指令,從線上儲存庫下載這些特性:
FROM websphere-liberty:kernel
COPY server.xml /config/
RUN installUtility install --acceptLicense defaultServer
webProfile6 映像檔包含符合「Java EE6 Web
設定檔」標準所需的特性。它也會利用執行時期 JAR 檔來納入更多特性(尤其是 OSGi 應用程式需要的特性),使內容與可供下載的特性一致。
webProfile7 映像檔包含符合「Java EE7 Web
設定檔」標準所需的特性。javaee7 映像檔是這個映像檔的延伸,並加入了符合
Java EE7 Full Platform 標準所需的特性。javaee7 映像檔也會標示著
latest。
webProfile6、
webProfile7 和
javaee7
映像檔也都包含一組通用的特性,用於一般的正式作業實務。構成這組通用特性的特性如下:
- appSecurity-2.0
- collectiveMember-1.0
- localConnector-1.0
- ldapRegistry-3.0
- monitor-1.0
- requestTiming-1.0
- restConnector-1.0
- sessionDatabase-1.0
- 請更新 server.xml 檔,藉由在伺服器段落內新增下列元素,以接受來自儲存器外部的 HTTP 連線:
<httpEndpoint host="*" httpPort="9080" httpsPort="-1"/>
- 建立一個 Eclipse 專案,例如 sample-one-container。在這個專案中,包含來自
server.xml 檔的 Dockerfile 和 WAR 檔。 請參閱下列 Dockerfile 範例:
FROM library/websphere-liberty:webProfile7
Add sample-one.war /opt/ibm/wlp/usr/servers/defaultServer/apps
COPY server.xml /opt/ibm/wlp/usr/servers/defaultServer/
ENV LICENSE accept
在這個 Dockerfile 中,Liberty 映像檔是自訂的,其中將 WAR 檔複製到
drop-ins 目錄,這個目錄用來安裝應用程式和啟動伺服器。server.xml 會以已修改的
server.xml 取代,以接受來自儲存器外部的 HTTP 連線。也會接受授權。
- 將 server.xml 和 WAR 檔一併收集到這個專案中,並準備執行 Docker 建置,以建立 Docker 映像檔。
- 開啟指令行,並將現行目錄設為 sample-one-container 專案目錄,然後執行 Docker 建置。 這是一項自訂 Docker 建置,起始於 Liberty Docker Hub 映像檔,且會新增應用程式和對應的
server.xml 配置。請參閱下列範例,其中顯示正在執行的成功建置:
arthurs-mbp:docker-hub arthur$ docker build .
Sending build context to Docker daemon 957.4kB
Step 1/4 : FROM websphere-liberty:kernel
---> 3fd79ff460ff
Step 2/4 : COPY server.xml /config/
---> Using cache
---> a0e43965425f
Step 3/4 : COPY airlines.war /config/apps/
---> Using cache
---> dfc6aee86df5
Step 4/4 : RUN installUtility install --acceptLicense defaultServer
---> Using cache
---> d5ab21decab4
Successfully built d5ab21decab4
arthurs-mbp:docker-hub arthur$
- 使用 Docker 使用者 ID 和密碼登入。 當您登入 Docker Hub 時,會顯示類似下列範例的輸出:
arthurs-mbp:docker-hub arthur$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: arthurdm
Password:
Login Succeeded
arthurs-mbp:docker-hub arthur$
- 建置完成之後,請為映像檔建立標籤。 這個標籤代表在登錄中用來參照此映像檔的名稱。請參閱下列範例:
arthurs-mbp:docker-hub arthur$ docker tag d5ab21decab4 arthurdm/websphere-liberty
- 將映像檔推送至 Docker Hub 儲存庫,讓它變成公用,以供下載和執行。 請參閱下列範例:
arthurs-mbp:docker-hub arthur$ docker push arthurdm/websphere-liberty
The push refers to a repository [docker.io/arthurdm/websphere-liberty]
c2eefa54fcc7: Layer already exists
09fa033b42e3: Layer already exists
753266ce94a2: Layer already exists
0a76debd7d35: Layer already exists
d86dd55017f1: Layer already exists
d5e2acba7cce: Layer already exists
eefb3f013a83: Layer already exists
28fca5e92849: Layer already exists
3e60706b7714: Layer already exists
1a39a1088d6e: Layer already exists
73e5d2de6e3e: Layer already exists
08f405d988e4: Layer already exists
511ddc11cf68: Layer already exists
a1a54d352248: Layer already exists
9d3227c1793b: Layer already exists
latest: digest: sha256:9e41f2a269360fbd0ff926434ab4df38cce49aa83442b1a38eaf13049cb164b2 size: 3453
arthurs-mbp:docker-hub arthur$
下一步
將應用程式推送至儲存庫之後,請指定映像檔
arthurdm/websphere-liberty,將應用程式安裝在 IBM Cloud Private 環境。這項安裝是透過 Helm 圖表來達成。