From dc43aacaa86287ccb4827b2a3079c4fbbbbf58ac Mon Sep 17 00:00:00 2001 From: thuanle Date: Fri, 15 Aug 2025 10:07:24 +0700 Subject: [PATCH] node-python image --- .gitea/workflows/docker-node.yml | 4 +- .gitea/workflows/node-python.yml | 66 ++++++++++++++++++++++++++++++++ docker-node.Dockerfile | 29 +++++++------- node-python.Dockerfile | 16 ++++++++ 4 files changed, 99 insertions(+), 16 deletions(-) create mode 100644 .gitea/workflows/node-python.yml create mode 100644 node-python.Dockerfile diff --git a/.gitea/workflows/docker-node.yml b/.gitea/workflows/docker-node.yml index b99fdbc..008295d 100644 --- a/.gitea/workflows/docker-node.yml +++ b/.gitea/workflows/docker-node.yml @@ -1,4 +1,4 @@ -name: Weekly Docker Build +name: docker-node image on: push: @@ -43,7 +43,7 @@ jobs: docker push ${{ env.IMAGE_BASE }}:${{ env.IMAGE }}-${{ matrix.arch }}-latest amend-manifest: - runs-on: ubuntu-latest + runs-on: linux needs: [build] steps: - name: Login to Docker Registry diff --git a/.gitea/workflows/node-python.yml b/.gitea/workflows/node-python.yml new file mode 100644 index 0000000..c97075a --- /dev/null +++ b/.gitea/workflows/node-python.yml @@ -0,0 +1,66 @@ +name: node-python image + +on: + push: + schedule: + - cron: '0 2 * * 0' # 02:00 sáng Chủ nhật (UTC) + workflow_dispatch: # Cho phép chạy tay nếu cần + +env: + IMAGE_BASE: git.thuanle.me/public/base + IMAGE: node-python + +jobs: + build: + strategy: + matrix: + arch: + - arm64 + - amd64 + runs-on: ${{ matrix.arch }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Login to Docker Registry + uses: docker/login-action@v3 + with: + registry: git.thuanle.me + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build Docker images + run: | + echo "Building image ${{ env.IMAGE }} for architecture: ${{ matrix.arch }}" + + docker build \ + -f ${{ env.IMAGE }}.Dockerfile \ + -t ${{ env.IMAGE_BASE }}:${{ env.IMAGE }}-${{ matrix.arch }}-latest \ + --label "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \ + --label "commit_sha=${{ github.sha }}" \ + . + + docker push ${{ env.IMAGE_BASE }}:${{ env.IMAGE }}-${{ matrix.arch }}-latest + + amend-manifest: + runs-on: linux + needs: [build] + steps: + - name: Login to Docker Registry + uses: docker/login-action@v3 + with: + registry: git.thuanle.me + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Push Docker manifest + run: | + echo "Delete existing manifest" + docker manifest rm ${{ env.IMAGE_BASE }}:${{ env.IMAGE }}-latest || true + + echo "Create new manifest" + docker manifest create ${{ env.IMAGE_BASE }}:${{ env.IMAGE }}-latest \ + ${{ env.IMAGE_BASE }}:${{ env.IMAGE }}-amd64-latest \ + ${{ env.IMAGE_BASE }}:${{ env.IMAGE }}-arm64-latest + + docker manifest push ${{ env.IMAGE_BASE }}:${{ env.IMAGE }}-latest \ No newline at end of file diff --git a/docker-node.Dockerfile b/docker-node.Dockerfile index 73b0a87..5435898 100644 --- a/docker-node.Dockerfile +++ b/docker-node.Dockerfile @@ -1,19 +1,20 @@ -# Node LTS 24 trên Debian 12 (Bookworm) bản slim -FROM node:latest +FROM node:22-slim ENV DEBIAN_FRONTEND=noninteractive \ DOCKER_HOST=unix:///var/run/docker.sock -# Cài Docker CLI từ repo chính thức của Docker (lấy bản mới nhất) -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates curl gnupg git lsb-release \ - && install -m 0755 -d /etc/apt/keyrings \ - && curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \ - && chmod a+r /etc/apt/keyrings/docker.asc \ - && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \ - https://download.docker.com/linux/debian $(. /etc/os-release; echo $VERSION_CODENAME) stable" \ - > /etc/apt/sources.list.d/docker.list \ - && apt-get update \ - && apt-get install -y --no-install-recommends docker-ce-cli \ - && rm -rf /var/lib/apt/lists/* +# Cài git + Docker CLI (repo chính thức Docker) +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends ca-certificates curl gnupg lsb-release git; \ + install -m 0755 -d /etc/apt/keyrings; \ + curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc; \ + chmod a+r /etc/apt/keyrings/docker.asc; \ + . /etc/os-release; \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian ${VERSION_CODENAME} stable" \ + > /etc/apt/sources.list.d/docker.list; \ + apt-get update; \ + apt-get install -y --no-install-recommends docker-ce-cli; \ + rm -rf /var/lib/apt/lists/* +WORKDIR /app diff --git a/node-python.Dockerfile b/node-python.Dockerfile new file mode 100644 index 0000000..1eca772 --- /dev/null +++ b/node-python.Dockerfile @@ -0,0 +1,16 @@ +FROM node:22-slim + +ENV DEBIAN_FRONTEND=noninteractive + +# Cài git + Python 3.11 (Debian stable) +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + git \ + python3 python3-pip python3-venv python3-distutils; \ + rm -rf /var/lib/apt/lists/* + +# (tuỳ chọn) nâng pip lên mới nhất +RUN python3 -m pip install --upgrade pip + +WORKDIR /app