diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index fa20222..afe79b8 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -2,11 +2,18 @@ name: Docker Build on: push: + branches: + - main pull_request: workflow_dispatch: +permissions: + contents: read + packages: write + env: - IMAGE_NAME: idrac-info + REGISTRY: gitea.mouse84.com + IMAGE_NAME: kim.kanghee/idrac-info DOCKERFILE: Dockerfile BUILD_CONTEXT: . @@ -23,7 +30,10 @@ jobs: shell: bash run: | SHORT_SHA="$(printf '%s' "${GITHUB_SHA:-local}" | cut -c1-12)" - echo "IMAGE_TAG=${IMAGE_NAME}:${SHORT_SHA}" >> "${GITHUB_ENV}" + IMAGE_REPO="${REGISTRY}/${IMAGE_NAME}" + echo "IMAGE_REPO=${IMAGE_REPO}" >> "${GITHUB_ENV}" + echo "IMAGE_TAG=${IMAGE_REPO}:${SHORT_SHA}" >> "${GITHUB_ENV}" + echo "IMAGE_LATEST=${IMAGE_REPO}:latest" >> "${GITHUB_ENV}" echo "SHORT_SHA=${SHORT_SHA}" >> "${GITHUB_ENV}" - name: Show Docker version @@ -43,10 +53,23 @@ jobs: --pull \ --file "${DOCKERFILE}" \ --tag "${IMAGE_TAG}" \ - --tag "${IMAGE_NAME}:ci" \ + --tag "${IMAGE_LATEST}" \ "${BUILD_CONTEXT}" - name: Inspect built image run: | docker image inspect "${IMAGE_TAG}" > /dev/null - docker images "${IMAGE_NAME}" + docker images "${IMAGE_REPO}" + + - name: Login to Gitea Container Registry + if: gitea.event_name == 'push' && gitea.ref == 'refs/heads/main' + run: | + echo "${{ secrets.GITEA_TOKEN }}" | docker login "${REGISTRY}" \ + --username "${{ gitea.actor }}" \ + --password-stdin + + - name: Push Docker image + if: gitea.event_name == 'push' && gitea.ref == 'refs/heads/main' + run: | + docker push "${IMAGE_TAG}" + docker push "${IMAGE_LATEST}" diff --git a/DOCKER.md b/DOCKER.md index 5c04704..af0d9f6 100644 --- a/DOCKER.md +++ b/DOCKER.md @@ -1,18 +1,39 @@ # Docker Usage -Build and run the app with Docker Compose: +The default compose file pulls the image from the Gitea Container Registry: ```powershell -docker compose up --build +docker compose pull +docker compose up -d +``` + +Default image: + +```text +gitea.mouse84.com/kim.kanghee/idrac-info:latest +``` + +Use a specific image tag: + +```powershell +$env:IDRAC_INFO_IMAGE = "gitea.mouse84.com/kim.kanghee/idrac-info:" +docker compose pull +docker compose up -d +``` + +Build locally instead of pulling: + +```powershell +docker compose -f docker-compose.yml -f docker-compose.build.yml up --build -d ``` Build only: ```powershell -docker build -t idrac-info:local . +docker build -t gitea.mouse84.com/kim.kanghee/idrac-info:local . ``` -Run the built image without Compose: +Run the pulled image without Compose: ```powershell docker run --rm --network host ` @@ -21,7 +42,7 @@ docker run --rm --network host ` -e AUTO_BOOTSTRAP_DB=true ` -v ${PWD}/data:/app/data ` -v ${PWD}/backend/instance:/app/backend/instance ` - idrac-info:local + gitea.mouse84.com/kim.kanghee/idrac-info:latest ``` Open the app: @@ -42,7 +63,7 @@ process already uses `6050` on the host. Run in the background: ```powershell -docker compose up --build -d +docker compose up -d ``` Stop the container: @@ -75,7 +96,7 @@ The container defaults to port `6050`. To use a different host port: ```powershell $env:FLASK_PORT = "8080" -docker compose up --build +docker compose up -d ``` Then open: @@ -117,7 +138,22 @@ call `racadm` directly. After building, verify the tools inside the image: ```powershell -docker run --rm idrac-info:local sh -lc "command -v racadm && command -v ipmitool && ipmitool -V" +docker run --rm gitea.mouse84.com/kim.kanghee/idrac-info:latest sh -lc "command -v racadm && command -v ipmitool && ipmitool -V" +``` + +## Registry + +Gitea Actions builds and pushes these tags on `main`: + +```text +gitea.mouse84.com/kim.kanghee/idrac-info:latest +gitea.mouse84.com/kim.kanghee/idrac-info: +``` + +If the package is private, log in before pulling: + +```powershell +docker login gitea.mouse84.com ``` Host networking works as expected on Linux Docker hosts. Docker Desktop on diff --git a/docker-compose.build.yml b/docker-compose.build.yml new file mode 100644 index 0000000..bc15cc3 --- /dev/null +++ b/docker-compose.build.yml @@ -0,0 +1,6 @@ +services: + idrac-info: + build: + context: . + dockerfile: Dockerfile + image: "${IDRAC_INFO_IMAGE:-gitea.mouse84.com/kim.kanghee/idrac-info:local}" diff --git a/docker-compose.yml b/docker-compose.yml index 2ea9cee..a4fc0b4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,6 @@ services: idrac-info: - build: - context: . - dockerfile: Dockerfile - image: idrac-info:local + image: "${IDRAC_INFO_IMAGE:-gitea.mouse84.com/kim.kanghee/idrac-info:latest}" container_name: idrac-info network_mode: "host" environment: