From 42f1b81fadb49c934a4c92e5fd9578fa368262f4 Mon Sep 17 00:00:00 2001 From: Bibo Hao Date: Tue, 8 Apr 2025 11:32:39 +0000 Subject: [PATCH 1/3] migrate to quay.io --- .github/workflows/build-docker.yml | 17 ++++++++++------ tool.sh | 31 +++++++++++++++--------------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index f033bbf..20b1217 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -4,24 +4,26 @@ on: push: branches: [ "main" ] paths-ignore: [ "*.md" ] + pull_request: branches: [ "main" ] paths-ignore: [ "*.md" ] + workflow_dispatch: # Allows you to run this workflow manually from the Actions tab concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true + cancel-in-progress: true env: BUILDKIT_PROGRESS: "plain" # Full logs for CI build. - REGISTRY_URL: "docker.io" # docker.io or other target registry URL: where to push images to. - REGISTRY_SRC: "docker.io" # For BASE_NAMESPACE of images: where to pull base images from. + REGISTRY_SRC: ${{ vars.REGISTRY_SRC || 'docker.io' }} # For BASE_NAMESPACE of images: where to pull base images from, docker.io or other source registry URL. + REGISTRY_DST: ${{ vars.REGISTRY_DST || 'docker.io' }} # For tags of built images: where to push images to, docker.io or other destination registry URL. # DOCKER_REGISTRY_USERNAME and DOCKER_REGISTRY_PASSWORD is required for docker image push, they should be set in CI secrets. - DOCKER_REGISTRY_USERNAME: ${{ secrets.DOCKER_REGISTRY_USERNAME }} + DOCKER_REGISTRY_USERNAME: ${{ vars.DOCKER_REGISTRY_USERNAME }} DOCKER_REGISTRY_PASSWORD: ${{ secrets.DOCKER_REGISTRY_PASSWORD }} # used to sync image to mirror registry - DOCKER_MIRROR_REGISTRY_USERNAME: ${{ secrets.DOCKER_MIRROR_REGISTRY_USERNAME }} + DOCKER_MIRROR_REGISTRY_USERNAME: ${{ vars.DOCKER_MIRROR_REGISTRY_USERNAME }} DOCKER_MIRROR_REGISTRY_PASSWORD: ${{ secrets.DOCKER_MIRROR_REGISTRY_PASSWORD }} jobs: @@ -149,7 +151,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - run: | + - env: + AUTH_FILE_CONTENT: ${{ secrets.AUTH_FILE_CONTENT }} + DOCKER_MIRROR_REGISTRY: ${{ vars.DOCKER_MIRROR_REGISTRY }} + run: | source ./tool.sh printenv | sort > /tmp/docker.env docker run --rm --env-file /tmp/docker.env -v $(pwd):/tmp -w /tmp ${IMG_NAMESPACE:-qpod}/docker-kit \ diff --git a/tool.sh b/tool.sh index ab015a1..4988560 100644 --- a/tool.sh +++ b/tool.sh @@ -14,52 +14,51 @@ else fi export IMG_NAMESPACE=$(echo "${CI_PROJECT_NAMESPACE}" | awk '{print tolower($0)}') -export IMG_PREFIX=$(echo "${REGISTRY_URL:-"docker.io"}/${IMG_NAMESPACE}" | awk '{print tolower($0)}') +export IMG_PREFIX_SRC=$(echo "${REGISTRY_SRC:-"docker.io"}/${IMG_NAMESPACE}" | awk '{print tolower($0)}') +export IMG_PREFIX_DST=$(echo "${REGISTRY_DST:-"docker.io"}/${IMG_NAMESPACE}" | awk '{print tolower($0)}') export TAG_SUFFIX="-$(git rev-parse --short HEAD)" echo "--------> CI_PROJECT_NAMESPACE=${CI_PROJECT_NAMESPACE}" echo "--------> DOCKER_IMG_NAMESPACE=${IMG_NAMESPACE}" -echo "--------> DOCKER_IMG_PREFIX=${IMG_PREFIX}" +echo "--------> DOCKER_IMG_PREFIX_SRC=${IMG_PREFIX_SRC}" +echo "--------> DOCKER_IMG_PREFIX_DST=${IMG_PREFIX_DST}" echo "--------> DOCKER_TAG_SUFFIX=${TAG_SUFFIX}" -if [ -f /etc/docker/daemon.json ]; then - jq '.experimental=true | ."data-root"="/mnt/docker"' /etc/docker/daemon.json > /tmp/daemon.json && sudo mv /tmp/daemon.json /etc/docker/ \ - && ( sudo service docker restart || true ) -fi -cat /etc/docker/daemon.json -docker info +[ ! -f /etc/docker/daemon.json ] && sudo tee /etc/docker/daemon.json > /dev/null <<< '{}' +jq '.experimental=true | ."data-root"="/mnt/docker"' /etc/docker/daemon.json > /tmp/daemon.json && sudo mv /tmp/daemon.json /etc/docker/ +( sudo service docker restart || true ) && cat /etc/docker/daemon.json && docker info build_image() { echo "$@" ; IMG=$1; TAG=$2; FILE=$3; shift 3; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; WORKDIR="$(dirname $FILE)"; - docker build --compress --force-rm=true -t "${IMG_PREFIX}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX}" "$@" "${WORKDIR}" ; - docker tag "${IMG_PREFIX}/${IMG}:${TAG}" "${IMG_PREFIX}/${IMG}:${VER}" ; + docker build --compress --force-rm=true -t "${IMG_PREFIX_DST}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX_SRC}" "$@" "${WORKDIR}" ; + docker tag "${IMG_PREFIX_DST}/${IMG}:${TAG}" "${IMG_PREFIX_DST}/${IMG}:${VER}" ; } build_image_no_tag() { echo "$@" ; IMG=$1; TAG=$2; FILE=$3; shift 3; WORKDIR="$(dirname $FILE)"; - docker build --compress --force-rm=true -t "${IMG_PREFIX}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX}" "$@" "${WORKDIR}" ; + docker build --compress --force-rm=true -t "${IMG_PREFIX_DST}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX_SRC}" "$@" "${WORKDIR}" ; } build_image_common() { echo "$@" ; IMG=$1; TAG=$2; FILE=$3; shift 3; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; WORKDIR="$(dirname $FILE)"; - docker build --compress --force-rm=true -t "${IMG_PREFIX}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX}" "$@" "${WORKDIR}" ; - docker tag "${IMG_PREFIX}/${IMG}:${TAG}" "${IMG_PREFIX}/${IMG}:${VER}" ; + docker build --compress --force-rm=true -t "${IMG_PREFIX_DST}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX_SRC}" "$@" "${WORKDIR}" ; + docker tag "${IMG_PREFIX_DST}/${IMG}:${TAG}" "${IMG_PREFIX_DST}/${IMG}:${VER}" ; } alias_image() { IMG_1=$1; TAG_1=$2; IMG_2=$3; TAG_2=$4; shift 4; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; - docker tag "${IMG_PREFIX}/${IMG_1}:${TAG_1}" "${IMG_PREFIX}/${IMG_2}:${TAG_2}" ; - docker tag "${IMG_PREFIX}/${IMG_2}:${TAG_2}" "${IMG_PREFIX}/${IMG_2}:${VER}" ; + docker tag "${IMG_PREFIX_DST}/${IMG_1}:${TAG_1}" "${IMG_PREFIX_DST}/${IMG_2}:${TAG_2}" ; + docker tag "${IMG_PREFIX_DST}/${IMG_2}:${TAG_2}" "${IMG_PREFIX_DST}/${IMG_2}:${VER}" ; } push_image() { KEYWORD="${1:-second}"; docker image prune --force && docker images | sort; IMAGES=$(docker images | grep "${KEYWORD}" | awk '{print $1 ":" $2}') ; - echo "$DOCKER_REGISTRY_PASSWORD" | docker login "${REGISTRY_URL}" -u "$DOCKER_REGISTRY_USERNAME" --password-stdin ; + echo "$DOCKER_REGISTRY_PASSWORD" | docker login "${REGISTRY_DST}" -u "$DOCKER_REGISTRY_USERNAME" --password-stdin ; for IMG in $(echo "${IMAGES}" | tr " " "\n") ; do docker push "${IMG}"; From 7fcc5e300330bad1582bfae170d778924799e368 Mon Sep 17 00:00:00 2001 From: Bibo Hao Date: Tue, 8 Apr 2025 17:50:49 +0000 Subject: [PATCH 2/3] debug casdoor build --- docker_casdoor/Dockerfile | 6 ++++-- docker_casdoor/work/script-setup-casdoor.sh | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docker_casdoor/Dockerfile b/docker_casdoor/Dockerfile index 1870895..60d115d 100644 --- a/docker_casdoor/Dockerfile +++ b/docker_casdoor/Dockerfile @@ -18,10 +18,12 @@ FROM ${BASE_NAMESPACE:+$BASE_NAMESPACE/}${BASE_IMG} COPY --from=builder /opt/casdoor /opt/casdoor COPY work/app.conf /opt/casdoor/conf/app.conf RUN set -eux \ - && mkdir -pv /root/web && ln -sf /opt/casdoor/web/build /root/web/ \ - && ls -alh /opt/casdoor + && mkdir -pv /root/web && ln -sf /opt/casdoor/web/build /root/web/ && ls -alh /opt/casdoor/web \ + && chmod +x /opt/casdoor/docker-entrypoint.sh && ls -alh /opt/casdoor LABEL maintainer="haobibo@gmail.com" ENV RUNNING_IN_DOCKER true WORKDIR /opt/casdoor EXPOSE 8000 +ENTRYPOINT ["/bin/bash"] +CMD ["/opt/casdoor/docker-entrypoint.sh"] diff --git a/docker_casdoor/work/script-setup-casdoor.sh b/docker_casdoor/work/script-setup-casdoor.sh index c8f1069..92cf209 100644 --- a/docker_casdoor/work/script-setup-casdoor.sh +++ b/docker_casdoor/work/script-setup-casdoor.sh @@ -16,14 +16,15 @@ setup_casdoor() { && echo "${VER_CASDOOR}" > version_info.txt \ && mv "./server_linux_${ARCH}" ./swagger ./version_info.txt /opt/casdoor/ \ && ln -sf "/opt/casdoor/server_linux_${ARCH}" /opt/casdoor/server \ - && cat ./conf/app.conf | sort > /opt/casdoor/conf/app.conf + && cat ./conf/app.conf | sort > /opt/casdoor/conf/app.conf \ + && mv ./docker-entrypoint.sh /opt/casdoor/ # && go test -v -run TestGetVersionInfo ./util/system_test.go ./util/system.go > version_info.txt \ echo "--> Building Frontend..." \ && cd /tmp && corepack enable && yarn -v \ && cd /tmp/casdoor/web \ && yarn set version berry && yarn install && yarn run build \ - && mv ./build /opt/casdoor/web/ + && mv ./build*/* /opt/casdoor/web/ # && yarn install --frozen-lockfile && yarn run build \ echo "--> Finished building casdoor to /opt/casdoor!" \ From d3201044c51fcb05b6f3a6209afd9791d0d060eb Mon Sep 17 00:00:00 2001 From: Bibo Hao Date: Tue, 8 Apr 2025 18:05:10 +0000 Subject: [PATCH 3/3] debug casdoor --- docker_casdoor/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker_casdoor/Dockerfile b/docker_casdoor/Dockerfile index 60d115d..183ec78 100644 --- a/docker_casdoor/Dockerfile +++ b/docker_casdoor/Dockerfile @@ -25,5 +25,5 @@ LABEL maintainer="haobibo@gmail.com" ENV RUNNING_IN_DOCKER true WORKDIR /opt/casdoor EXPOSE 8000 -ENTRYPOINT ["/bin/bash"] -CMD ["/opt/casdoor/docker-entrypoint.sh"] +# ENTRYPOINT ["/bin/bash"] +# CMD ["/opt/casdoor/docker-entrypoint.sh"]