Home About Contact
Azure , Docker , Colima

ACR へコンテナイメージを push する (azure-web-app Part 2)

Colima 覚え書き、Ktorアプリをコンテナ実行まで の続きです。 今回は、 Colima docker でつくったコンテナイメージを Azure Container Registry へ push します。

ガイドはこれ:

ここでの説明は az login 済みであることが前提。

そもそも、ACR を用意していないのでつくる:

createACR.sh:

#!/bin/bash

RG=myktor-rg
ACR_NAME=myktor
L=eastus

az group create --name ${RG} --location ${L}
az acr create --resource-group ${RG} --name ${ACR_NAME} --sku Basic --admin-enabled true

なお、紙面の都合上 az group create と az acr create を連続実行しているが、 最初のコマンドが失敗したら次のコマンドは意味をなさないから別々に実行した方がいい。

myktor の部分は適当な名前に置きかえてください。 そもそも既存の名前は使えないから実際は myktor などという短い名前が通るか不明。 ここでは ACR名が myktor だったとして説明していく。

実行:

$ sh createACR.sh

標準出力のうち loginServer をメモしておく。 (あとでわかったのだが実際は、ACR_NAME さえわかれば問題ないかも。)

では、 az acr login する:

$ az acr login --name myktor.azurecr.io

エラーが出た。

025-02-10 01:30:45.422956 An error occurred: DOCKER_COMMAND_ERROR
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

確認する:

$ colima ls
PROFILE    STATUS     ARCH       CPUS    MEMORY    DISK     RUNTIME    ADDRESS
default    Stopped    aarch64    2       2GiB      24GiB

colima stop 状態のなので、まずは colima start する。 そして再度 az acr login する:

$ colima start
$ az acr login --name myktor.azurecr.io

できた。

メッセージでる:

The login server endpoint suffix '.azurecr.io' is automatically omitted.
Login Succeeded

.azurecr.io はつけなくていいらしい。 これで実際はログインできる(ようだ)。

$ az acr login --name myktor

イメージ作成済みか確認:

$ docker image ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

ない。 コンテナイメージをつくる。

$ ./gradlew buildFatJar
$ docker build -t my-ktor .

ちなみに Dockerfile はこれ:

FROM --platform=linux/amd64 eclipse-temurin:17-jre
WORKDIR /app
COPY app/build/libs/fat.jar fat.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "fat.jar"]
$ docker image ls
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
my-ktor           latest    a1725e39c7f3   3 seconds ago   281MB
eclipse-temurin   17-jre    af0895d1861a   10 days ago     263MB

たぶん、次のようにするだけで push できる気もする(試してはいない)。

$ docker push my-ktor:latest

ここでは、 この クイック スタート:Azure CLI を使用したプライベート コンテナー レジストリの作成 Offical ガイドページにしたがって、タグづけしてから push する。

タグを追加:

$ docker tag my-ktor myktor.azurecr.io/my-ktor:v1

確認:

$ docker image ls
REPOSITORY                          TAG       IMAGE ID       CREATED          SIZE
myktor.azurecr.io/my-ktor           v1        a1725e39c7f3   11 minutes ago   281MB
...

タグづけしたイメージを push する:

$ docker push myktor.azurecr.io/my-ktor:v1

ACR に push されたか確認:

$ az acr repository list --name myktor
[
  "my-ktor"
]

ACRに無事 push できました。