[JAVA] 2. Erstellen Sie ein Docker-Image und registrieren Sie die Registrierung

Einführung

Dieser Artikel ist eine Fortsetzung von 1 unten.

  1. Java-Webmodul schnell mit Google Kubernetes Engine (GKE) ausführen
  2. Docker-Image erstellen und Registrierung registrieren
  3. Erstellen einer Datenbank, auf die über das Webmodul zugegriffen wird
  4. Manifest erstellen und Webmodul ausführen (https://qiita.com/Turtle-child-No2/items/23982059d188e44618df)

2-1. Erstellen einer Docker-Datei

Schritt 2-1.1

GKE erfasst das in der Container-Registrierung registrierte Docker-Image und führt es auf dem in 1 erstellten Knoten aus (vorheriger Artikel) (Webmodul wird ausgeführt). In diesem Artikel erstellen wir ein Docker-Image, das das von Github erhaltene Webmodul auf Tomcat erweitert. Das Docker-Image basiert auf der Docker-Datei. Jetzt erstellen wir eine Docker-Datei und erstellen ein Docker-Image.

Stellen Sie zunächst eine Verbindung zum Kubernetes-Cluster her. 014.png

Schritt 2-1.2

Der Detailbildschirm wird angezeigt. Klicken Sie auf das Quadrat oben rechts, um den Befehl in die Zwischenablage zu kopieren. Klicken Sie dann auf In Cloud Shell ausführen. 015.png

Schritt 2-1.3

Der folgende Bildschirm wird möglicherweise angezeigt, wenn er zum ersten Mal ausgeführt wird. Klicken Sie in diesem Fall auf "Start CLOUD SHELL". 016.png Google Cloud Shell ist ein Tool, das Befehlszeilenzugriff auf Computerressourcen bietet, die auf der Google Cloud Platform gehostet werden. Es wird beendet, wenn Sie die Cloud Shell-Sitzung schließen oder länger als eine Stunde nichts tun. Da das Ausgangsverzeichnis jedoch dauerhaft ist, bleibt die Arbeit beim nächsten Start von Cloud Shell erhalten.

Schritt 2-1.4

Wenn der folgende Bildschirm angezeigt wird, drücken Sie einmal die Eingabetaste, um den bereits eingegebenen Befehl auszuführen (Befehl zum Abrufen der Authentifizierungsinformationen, die für die Interaktion mit dem Kubernetes-Cluster erforderlich sind). 017.png

Der Befehl wird ausgeführt und der Status lautet wie folgt.

Welcome to Cloud Shell! Type "help" to get started.
Your Cloud Platform project in this session is set to [project_id].
Use “gcloud config set project [project_id]” to change to a different project.
[userid]@cloudshell:~ ([projectid])$ gcloud beta container clusters get-credentials standard-cluster-1 --region us-central1 --project [project_id]
Fetching cluster endpoint and auth data.
kubeconfig entry generated for standard-cluster-1.
[userid]@cloudshell:~ ([project_id])$

Schritt 2-1.5

Starten Sie anschließend vi und erstellen Sie eine Docker-Datei mit dem folgenden Inhalt.

[userid]@cloudshell:~ ([project_id])$ vi dockerfile
FROM centos:7
EXPOSE 8080
RUN yum install -y git
RUN yum install -y install unzip
WORKDIR /work
RUN git clone https://github.com/Turtle-child-No2/k8s.git
ADD openjdk-11.0.2_linux-x64_bin.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk-11.0.2
ENV PATH=$PATH:$JAVA_HOME/bin
ADD gradle-5.2.1-bin.tar.gz /usr/local
ENV GRADLE_HOME=/usr/local/gradle-5.2.1
ENV PATH=$GRADLE_HOME/bin:$PATH
RUN mv -T ./k8s/ ./sample-app/
WORKDIR ./sample-app
RUN gradle build --stacktrace
ADD apache-tomcat-9.0.17.tar.gz /opt/
RUN rm -Rf /opt/apache-tomcat-9.0.17/webapps/ROOT/
RUN rm -Rf /opt/apache-tomcat-9.0.17/webapps/docs/
RUN rm -Rf /opt/apache-tomcat-9.0.17/webapps/examples/
RUN rm -Rf /opt/apache-tomcat-9.0.17/webapps/host-manager/
RUN rm -Rf /opt/apache-tomcat-9.0.17/webapps/manager/
RUN mkdir -m 750 /opt/apache-tomcat-9.0.17/webapps/sample-app
RUN unzip -d /opt/apache-tomcat-9.0.17/webapps/sample-app/ /work/sample-app/build/libs/sample-app.war
RUN find /opt/apache-tomcat-9.0.17/webapps/sample-app/ -type d -exec chmod 750 \{\} \;
RUN find /opt/apache-tomcat-9.0.17/webapps/sample-app/ -type f -exec chmod 640 \{\} \;
CMD ["/opt/apache-tomcat-9.0.17/bin/catalina.sh", "run"]

Um den Inhalt der Docker-Datei kurz zu erläutern, wird zunächst centos7 als Basis-Image angegeben. Installieren Sie als Nächstes die Portnummer, die beim Starten des Containers abgehört werden soll, und die Pakete, die zum Abrufen und Kompilieren der Java-Quelle erforderlich sind. Holen Sie sich dann die Java-Quelle von Github und kompilieren Sie sie mit Gradle. Zum Schluss entpacken Sie Tomcat, löschen Sie nicht benötigte Dateien, ändern Sie die Ordnerberechtigungen, starten Sie Tomcat und fertig.

Schritt 2-1.6

Bereiten Sie als Nächstes die folgenden drei Dateien vor, die zum Erstellen des Docker-Images erforderlich sind.

Schritt 2-1.7

Laden Sie openjdk-11.0.2_linux-x64_bin.tar.gz herunter.

[userid]@cloudshell:~ ([project_id])$ curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  178M  100  178M    0     0  9686k      0  0:00:18  0:00:18 --:--:-- 9827k

Schritt 2-1.8

Laden Sie apache-tomcat-9.0.17.tar.gz herunter.

[userid]@cloudshell:~ ([project_id])$ curl -O http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-9.0.17.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10.2M  100 10.2M    0     0  2726k      0  0:00:03  0:00:03 --:--:-- 2727k

Schritt 2-1.9

gradle-5.2.1-bin.tar.gz lädt gradle-5.2.1-bin.zip herunter, um den ADD-Befehl von Docker zu verwenden, entpackt ihn und archiviert ihn dann in tar.gz.

[userid]@cloudshell:~ ([project_id])$ curl -OL https://services.gradle.org/distributions/gradle-5.2.1-bin.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 83.3M  100 83.3M    0     0  81.6M      0  0:00:01  0:00:01 --:--:--  105M
[userid]@cloudshell:~ ([project_id])$ unzip gradle-5.2.1-bin.zip
   creating: gradle-5.2.1/
  inflating: gradle-5.2.1/getting-started.html
  inflating: gradle-5.2.1/LICENSE
   creating: gradle-5.2.1/media/
  inflating: gradle-5.2.1/media/gradle-icon-16x16.png
・
・
・
  inflating: gradle-5.2.1/lib/plugins/junit-platform-commons-1.3.1.jar
  inflating: gradle-5.2.1/lib/plugins/apiguardian-api-1.0.0.jar
  inflating: gradle-5.2.1/lib/plugins/opentest4j-1.1.1.jar
[userid]@cloudshell:~ ([project_id])$ tar -zcvf gradle-5.2.1-bin.tar.gz gradle-5.2.1
gradle-5.2.1/
gradle-5.2.1/NOTICE
gradle-5.2.1/bin/
gradle-5.2.1/bin/gradle.bat
・
・
・
gradle-5.2.1/media/gradle-icon-64x64.png
gradle-5.2.1/media/gradle-icon-128x128.png
gradle-5.2.1/init.d/
gradle-5.2.1/init.d/readme.txt
gradle-5.2.1/getting-started.html

Schritt 2-1.10

Lassen Sie uns mit dem Befehl ls überprüfen, ob die folgenden 4 Dateien ordnungsgemäß erstellt wurden.

[userid]@cloudshell:~ ([project_id])$ ls -Fal
total 364340
drwxr-xr-x 7 [userid] [userid]      4096 Mar  9 17:50 ./
drwxr-xr-x 4 root    root         4096 Mar  9 14:38 ../
-rw-r--r-- 1 [userid] [userid]  10783080 Mar  9 17:36 apache-tomcat-9.0.17.tar.gz
-rw------- 1 [userid] [userid]       489 Mar  9 17:51 .bash_history
-rw-r--r-- 1 [userid] [userid]       220 May 16  2017 .bash_logout
-rw-r--r-- 1 [userid] [userid]      3706 Mar  9 14:38 .bashrc
drwxr-xr-x 3 [userid] [userid]      4096 Mar  9 14:38 .config/
drwx------ 2 [userid] [userid]      4096 Mar  9 14:38 .docker/
-rw-r--r-- 1 [userid] [userid]      1168 Mar  9 16:21 dockerfile
drwxr-xr-x 6 [userid] [userid]      4096 Feb  8 20:03 gradle-5.2.1/
-rw-r--r-- 1 [userid] [userid]  87295238 Mar  9 17:51 gradle-5.2.1-bin.tar.gz
-rw-r--r-- 1 [userid] [userid]  87430521 Mar  9 17:39 gradle-5.2.1-bin.zip
drwxr-xr-x 2 [userid] [userid]      4096 Mar  9 14:44 .kube/
-rw-r--r-- 1 [userid] [userid] 187513052 Mar  9 17:33 openjdk-11.0.2_linux-x64_bin.tar.gz
-rw-r--r-- 1 [userid] [userid]       675 May 16  2017 .profile
lrwxrwxrwx 1 [userid] [userid]        38 Mar  9 14:38 README-cloudshell.txt -> /google/devshell/README-cloudshell.txt
drwxr-xr-x 2 [userid] root         4096 Mar  9 14:38 .theia/
-rw------- 1 [userid] [userid]      1006 Mar  9 16:21 .viminfo

2-2. Erstellen Sie das Docker-Image

Schritt 2-2.1

Führen Sie den folgenden Befehl in dem Verzeichnis aus, das die vier zuvor erstellten Dateien enthält, um ein Docker-Image zu erstellen. Legen Sie jedoch zuvor die Projekt-ID in der Umgebungsvariablen fest.

[userid]@cloudshell:~ ([project_id])$ export PROJECT_ID="$(gcloud config get-value project -q)"
Your active configuration is: [cloudshell-21915]

Schritt 2-2.2

Erstellen Sie das Docker-Image.

[userid]@cloudshell:~ ([project_id])$ docker build --no-cache --rm -t gcr.io/${PROJECT_ID}/sample-app:latest .
Sending build context to Docker daemon  473.3MB
・
・
・
Step 26/26 : CMD ["/opt/apache-tomcat-9.0.17/bin/catalina.sh", "run"]
 ---> Running in 6b1c1d3d8d1f
Removing intermediate container 6b1c1d3d8d1f
 ---> 69ff4ed40a45
Successfully built 69ff4ed40a45
Successfully tagged gcr.io/[project_id]/sample-app:latest

Schritt 2-2.3

Überprüfen Sie das Docker-Image, das mit dem folgenden Befehl erstellt wurde.

[userid]@cloudshell:~ ([project_id])$ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
gcr.io/[project_id]/sample-app   latest              69ff4ed40a45        32 minutes ago      865MB

2-3 Registrierung der Registrierung des Docker-Images

Schritt 2-3.1

GKE lässt das Docker-Image in der Container-Registrierung registrieren. Registrieren Sie das zuvor erstellte Docker-Image in der Container-Registrierung.

[userid]@cloudshell:~ ([project_id])$ gcloud docker -- push gcr.io/${PROJECT_ID}/sample-app:latest
WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03.

As an alternative, use `gcloud auth configure-docker` to configure `docker` to
use `gcloud` as a credential helper, then use `docker` as you would for non-GCR
registries, e.g. `docker pull gcr.io/project-id/my-image`. Add
`--verbosity=error` to silence this warning: `gcloud docker
--verbosity=error -- pull gcr.io/project-id/my-image`.

See: https://cloud.google.com/container-registry/docs/support/deprecation-notices#gcloud-docker

The push refers to repository [gcr.io/[project_id]/sample-app]
165d18932f79: Pushed
3903f8c5dac4: Pushed
・
・
・
8294101b3641: Pushed
be99d3b0a3bf: Pushed
0e4c9a7eac59: Pushed
99a6cf5e838e: Pushed
5309f6df6f0b: Pushed
071d8bd76517: Layer already exists
latest: digest: sha256:082443b29ff78220569c1f558442346465fa700ac938f4754e8e506457eacd09 size: 4302

Schritt 2-3.

Stellen Sie sicher, dass Sie in der Containerregistrierung registriert sind. 018.png 019.png das ist alles

Recommended Posts

2. Erstellen Sie ein Docker-Image und registrieren Sie die Registrierung
Erstellen Sie ein Docker-Image für redoc-cli und registrieren Sie es auf Docker Hub
Vielleicht funktioniert es! Erstellen Sie ein Bild mit Docker und teilen Sie es!
Verwenden Sie Jenkins, um in Docker zu erstellen und dann ein Docker-Image zu erstellen.
Veröffentlichen Sie das Docker-Image in der GitHub-Paketregistrierung
Docker Compact Manual (4: Erstellen eines benutzerdefinierten Bildes)
Installieren Sie Docker und erstellen Sie eine Java-Ausführungsumgebung
Erfahren Sie mehr über das Docker-Image und das FROM der Docker-Datei
Testen, erstellen und verschieben Sie Docker-Images mithilfe von GitHub-Aktionen in die GitHub-Container-Registrierung
[Einführung in Docker] Erstellen Sie ein Docker-Image für maschinelles Lernen und verwenden Sie das Jupyter-Notizbuch
Schritte zum Verschieben eines Docker-Images in die GitHub Container Registry (ghcr.io)
Ich habe versucht, mit Wercker ein Docker-Image zu erstellen und zu veröffentlichen, mit dem GlassFish 5 gestartet wird
Nicht verwendetes Docker-Image löschen
Bis Sie Quarkus ausführen und Docker-Image auf Amazon ECS ausführen
Erstellen Sie ein Docker-Image mit installiertem Oracle JDK (yum
Registrieren Sie Ihr eigenes Docker-Image in ECR mithilfe der AWS CLI
Erstellen Sie mit Docker eine Umgebung für Rails5 und postgresql, damit auch pgadmin verwendet werden kann
[Docker] Erstelle eine elastische Suche, Kibana-Umgebung!
Installieren Sie das Garn im Docker-Image
Extrahieren Sie Dateien aus Docker Image
Erstellen Sie eine Tabelle und fügen Sie Spalten hinzu
Docker Image-Erstellung der Keycloak-Erweiterung und Leistungstest durch Gatling
Minimaler Workflow zum Verschieben des Docker-Images in die Github-Container-Registrierung mit Github-Aktionen
Stellen Sie sich die Spring Boot-App mit dem Jib-Maven-Plugin vor und starten Sie sie mit Docker
[GCP] Bis Sie das lokale Docker-Image in die Container-Registrierung verschieben
Übertragen Sie das von Docker Hub verteilte Docker-Image in die Google Container-Registrierung und starten Sie die VM basierend auf diesem Image