[17.0.0.3 und höher]

Docker-Container für Anwendungen erstellen

Sie müssen den Docker-Container erstellen und ihn mit einer mit Push-Operation in eine Registry übertragen, in der er von IBM Cloud Private referenziert wird.

Informationen zu diesem Vorgang

Verwenden Sie das offizielle Image mit WebSphere Application Server for Developers Liberty in Docker Hub.

In diesem Repository sind mehrere Images vorhanden. Das Image mit dem Tag beta enthält das Installationsarchiv für die monatliche Betaversion. Die anderen Images basieren auf dem neuesten allgemein verfügbaren Fixpack.

Das kernel-Image enthält nur den Liberty-Kernel und keine zusätzlichen Laufzeitfunktionen. Sie können dieses Image verwenden oder kundenspezifische Images verwenden, die nur das Feature enthalten, das für eine bestimmte Anwendung erforderlich ist. Das folgende Dockerfile-Beispielsnippet startet beispielsweise mit diesem Image, kopiert in die Datei server.xml, in der die von der Anwendung benötigten Features aufgelistet sind, und verwendet anschließend den Befehl installUtility, um diese Features aus dem Online-Repository herunterzuladen:
FROM websphere-liberty:kernel
COPY server.xml /config/
RUN installUtility install --acceptLicense defaultServer

Das webProfile6-Image enthält die Features, die für die Java EE-6-Web-Profile-Konformität erforderlich sind. Es extrahiert weitere Features, um mithilfe der Laufzeit-JAR-Datei die Inhalte mit den Features, die für den Download verfügbar sind, abzustimmen. Dies gilt insbesondere für die Features, die für OSGi-Anwendungen erforderlich sind.

Das webProfile7-Image enthält die Features, die für die Konformität mit Java EE 7 Web Profile erforderlich sind. Das javaee7-Image erweitert dieses Image und fügt die Features hinzu, die für die Konformität mit Java EE 7 Full Platform erforderlich sind. Das javaee7-Image ist außerdem mit latest getaggt.

Die Images webProfile6, webProfile7 und javaee7 enthalten außerdem alle einen gemeinsamen Satz von Features für ein typisches Produktionsszenario. Die folgenden Features bilden diesen gemeinsamen Satz von Features:
  • appSecurity-2.0
  • collectiveMember-1.0
  • localConnector-1.0
  • ldapRegistry-3.0
  • monitor-1.0
  • requestTiming-1.0
  • restConnector-1.0
  • sessionDatabase-1.0

Vorgehensweise

  1. Aktualisieren Sie die Datei server.xml, um HTTP-Verbindungen von außerhalb des Containers zu akzeptieren, indem Sie in der Serverzeilengruppe das folgende Element hinzufügen:
    <httpEndpoint host="*" httpPort="9080" httpsPort="-1"/>
  2. Erstellen Sie ein Eclipse-Projekt, wie z. B. sample-one-container. Schließen Sie in dieses Projekt die Dockerfile und die WAR-Datei aus der Datei server.xml ein. Sehen Sie sich hierzu das folgende Beispiel für die Dockerfile an:
    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

    In dieser Dockerfile wird das Liberty angepasst, indem die WAR-Datei in das Verzeichnis drop-ins kopiert wird, die die Anwendung installiert und den Server startet. Die Datei server.xml wird durch die geänderte server.xml-Datei ersetzt, um HTTP-Verbindungen von außerhalb des Containers zuzulassen. Die Lizenz wird ebenfalls akzeptiert.

  3. Stellen Sie die Datei server.xml und die WAR-Dateien in diesem Projekt zusammen und bereiten Sie die Ausführung des Docker-Builds vor, um ein Docker-Image zu erstellen.
  4. Öffnen Sie eine Befehlszeile und legen Sie das aktuelle Verzeichnis auf das Projektverzeichnis sample-one-container fest und führen Sie den Docker-Build aus. Dies ist ein angepasster Docker-Build, der mit dem Liberty-Docker-Hub-Image beginnt und eine Anwendung und die entsprechende Konfigurationsdatei server.xml hinzufügt. Sehen Sie sich das folgende Beispiel an, das die Ausführung eines erfolgreichen Builds anzeigt:
    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. Melden Sie sich mit Ihrer Docker-Benutzer-ID und dem zugehörigen Kennwort an. Wenn Sie sich an Docker Hub anmelden, wird eine Ausgabe ähnlich dem folgenden Beispiel angezeigt:
    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. Erstellen Sie den Tag für das Image, nachdem der Build fertiggestellt ist. Dieser Tag stellt den Namen dar, mit dem dieses Image in der Registry referenziert wird. Sehen Sie sich hierzu das folgende Beispiel an:
    arthurs-mbp:docker-hub arthur$ docker tag d5ab21decab4 arthurdm/websphere-liberty
  7. Übertragen Sie das Image mit Push-Operation in das Docker-Hub-Repository, machen Sie es öffentlich zugänglich, sodass es heruntergeladen und ausgeführt werden kann. Sehen Sie sich hierzu das folgende Beispiel an:
    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$

Ergebnisse

Sie haben einen Docker-Container erstellt, den Sie mit Push-Operation in ein Docker Hub-Repository übertragen haben.

Nächste Schritte

Nachdem Sie die Anwendung mit Push-Operation in das Repository übertragen haben, installieren Sie die Anwendung in Ihrer IBM Cloud Private-Umgebung, indem Sie das Image arthurdm/websphere-liberty angeben. Diese Installation wird mit dem Helmdiagramm durchgeführt.


Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_icp_docker.html