[17.0.0.3 以及更新版本]

為應用程式建立 Docker 儲存器

您必須建立 Docker 儲存器,將它推送至登錄,讓 IBM Cloud Private 從該登錄參照它。

關於這項作業

請在 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

webProfile6webProfile7javaee7 映像檔也都包含一組通用的特性,用於一般的正式作業實務。構成這組通用特性的特性如下:
  • appSecurity-2.0
  • collectiveMember-1.0
  • localConnector-1.0
  • ldapRegistry-3.0
  • monitor-1.0
  • requestTiming-1.0
  • restConnector-1.0
  • sessionDatabase-1.0

程序

  1. 請更新 server.xml 檔,藉由在伺服器段落內新增下列元素,以接受來自儲存器外部的 HTTP 連線:
    <httpEndpoint host="*" httpPort="9080" httpsPort="-1"/>
  2. 建立一個 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 連線。也會接受授權。

  3. server.xml 和 WAR 檔一併收集到這個專案中,並準備執行 Docker 建置,以建立 Docker 映像檔。
  4. 開啟指令行,並將現行目錄設為 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$
  5. 使用 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$
  6. 建置完成之後,請為映像檔建立標籤。 這個標籤代表在登錄中用來參照此映像檔的名稱。請參閱下列範例:
    arthurs-mbp:docker-hub arthur$ docker tag d5ab21decab4 arthurdm/websphere-liberty
  7. 將映像檔推送至 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$

結果

您已建立 Docker 儲存器,並已推送至 Docker Hub 儲存庫。

下一步

將應用程式推送至儲存庫之後,請指定映像檔 arthurdm/websphere-liberty,將應用程式安裝在 IBM Cloud Private 環境。這項安裝是透過 Helm 圖表來達成。


指示主題類型的圖示 作業主題

檔名:twlp_icp_docker.html