From 50eef356a6f49fbe56b2e1f780133abe1a8111da Mon Sep 17 00:00:00 2001 From: duhow Date: Mon, 10 Apr 2023 16:23:11 +0200 Subject: [PATCH 1/4] Initial rework of Dockerfile --- docker/Dockerfile | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 492e3ee57..286616113 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,37 +1,39 @@ # build frontend FROM node:lts-alpine as front-build-stage WORKDIR /front -COPY ./frontend/package*.json ./ +COPY ./frontend/package*.json . RUN npm install -COPY ./frontend ./ +COPY ./frontend . RUN npm run build # setup frontend FROM ubuntu/nginx:1.18-22.04_edge as production-stage -COPY --from=front-build-stage /front/dist /var/www/html -COPY ./frontend/assets/platforms /var/www/html/assets/platforms -RUN mkdir -p /var/www/html/assets/romm -RUN ln -s /romm/library /var/www/html/assets/romm/library -RUN ln -s /romm/resources /var/www/html/assets/romm/resources +ARG WEBSERVER_FOLDER=/var/www/html +COPY --from=front-build-stage /front/dist ${WEBSERVER_FOLDER} +COPY ./frontend/assets/platforms ${WEBSERVER_FOLDER}/assets/platforms +RUN mkdir -p ${WEBSERVER_FOLDER}/assets/romm && \ + ln -s /romm/library ${WEBSERVER_FOLDER}/assets/romm/library && \ + ln -s /romm/resources ${WEBSERVER_FOLDER}/assets/romm/resources # setup backend -RUN apt update -RUN apt install -y software-properties-common gcc -RUN add-apt-repository -y ppa:deadsnakes/ppa -RUN apt update -y && apt install libmariadb3 libmariadb-dev -y -RUN apt install -y python3.10 python3-pip +RUN apt update && \ + apt install -y --no-install-recommends software-properties-common gnupg gcc && \ + add-apt-repository -y ppa:deadsnakes/ppa && \ + apt update -y && apt install --no-install-recommends libmariadb3 libmariadb-dev -y && \ + apt install -y --no-install-recommends python3.10 python3.10-dev python3-pip && \ + apt autoremove && \ + rm -rf /var/lib/apt/lists/* /var/cache/apt/* WORKDIR /back COPY ./backend/requirements.txt ./requirements.txt -RUN pip install --upgrade pip -RUN pip install --no-cache-dir --upgrade -r ./requirements.txt -COPY ./backend/src ./ +RUN pip install --no-cache --upgrade pip && \ + pip install --no-cache --upgrade -r requirements.txt +COPY ./backend/src . # setup init script and config files -COPY ./docker/init_scripts/init_back /init_back -COPY ./docker/init_scripts/init_front /init_front -COPY ./docker/init_scripts/init /init +COPY ./docker/init_scripts/* / COPY ./docker/nginx/default.conf /etc/nginx/nginx.conf EXPOSE 80 +WORKDIR /romm CMD ["/init"] From 9cdca7c7aaf88c689023efd2a0ea1414774baf1c Mon Sep 17 00:00:00 2001 From: duhow Date: Mon, 10 Apr 2023 16:40:55 +0200 Subject: [PATCH 2/4] Remove software-properties-common dependency --- docker/Dockerfile | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 286616113..ab5819fc4 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -17,10 +17,14 @@ RUN mkdir -p ${WEBSERVER_FOLDER}/assets/romm && \ # setup backend RUN apt update && \ - apt install -y --no-install-recommends software-properties-common gnupg gcc && \ - add-apt-repository -y ppa:deadsnakes/ppa && \ - apt update -y && apt install --no-install-recommends libmariadb3 libmariadb-dev -y && \ - apt install -y --no-install-recommends python3.10 python3.10-dev python3-pip && \ + apt install -y --no-install-recommends ca-certificates curl gnupg && \ + # add deadsnakes ppa for Python versions + echo "deb https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/deadsnakes-ubuntu-ppa-jammy.list && \ + apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F23C5A6CF475977595C89F51BA6932366A755776 && \ + apt update && \ + apt install -y --no-install-recommends \ + libmariadb3 libmariadb-dev gcc \ + python3.10 python3.10-dev python3-pip && \ apt autoremove && \ rm -rf /var/lib/apt/lists/* /var/cache/apt/* WORKDIR /back From 80b56bcdd790134ebe7a59079fe5e4d6df524dda Mon Sep 17 00:00:00 2001 From: duhow Date: Mon, 10 Apr 2023 17:01:49 +0200 Subject: [PATCH 3/4] Rework GitHub Actions Workflow --- .github/actions/build.sh | 9 ------ .github/workflows/image.yml | 56 +++++++++++++++++++++++++++++-------- 2 files changed, 44 insertions(+), 21 deletions(-) delete mode 100755 .github/actions/build.sh diff --git a/.github/actions/build.sh b/.github/actions/build.sh deleted file mode 100755 index ea469a440..000000000 --- a/.github/actions/build.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [[ $GIT_BRANCH != 'master' ]]; then - docker buildx build --push\ - --tag zurdi15/romm:dev-latest --tag zurdi15/romm:dev-${VERSION}\ - --platform linux/arm64 . --file ./docker/Dockerfile -else - docker buildx build --push\ - --tag zurdi15/romm:latest --tag zurdi15/romm:${VERSION}\ - --platform linux/arm64,linux/amd64 . --file ./docker/Dockerfile -fi \ No newline at end of file diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml index 4d0aa73de..ae63c35df 100644 --- a/.github/workflows/image.yml +++ b/.github/workflows/image.yml @@ -11,20 +11,52 @@ on: jobs: build: runs-on: ubuntu-latest + permissions: + id-token: write + contents: write + packages: write steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set environment variables run: echo "GIT_BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV - - name: Install buildx - id: buildx - uses: crazy-max/ghaction-docker-buildx@v1 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker Hub + uses: docker/login-action@v2 with: - version: latest - - name: Login to docker hub - run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin - - name: Build the image - shell: bash - run: ./.github/actions/build.sh - env: - VERSION: ${{ inputs.version }} \ No newline at end of file + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Generate Docker metadata + id: meta + uses: docker/metadata-action@v4 + with: + images: | + name=zurdi15/romm + name=ghcr.io/zurdi15/romm + flavor: | + # latest on master branch, prefix dev on other branches + latest=${{ github.ref == format('refs/heads/{0}', 'master') }} + prefix=${{ github.ref != format('refs/heads/{0}', 'master') && 'dev-' || '' }} + tags: | + type=raw,value=latest + type=raw,value=${{ inputs.version }} + labels: | + org.opencontainers.image.version=${{ inputs.version }} + - name: Build image + uses: docker/build-push-action@v4 + with: + file: docker/Dockerfile + context: . + push: true + platforms: linux/arm64,linux/amd64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} From f9b8be2c3d34a945f9d7766fed9a65d34bfb3ffe Mon Sep 17 00:00:00 2001 From: duhow Date: Mon, 10 Apr 2023 17:27:04 +0200 Subject: [PATCH 4/4] Add latest always with prefix --- .github/workflows/image.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml index ae63c35df..400f7c508 100644 --- a/.github/workflows/image.yml +++ b/.github/workflows/image.yml @@ -44,10 +44,9 @@ jobs: name=ghcr.io/zurdi15/romm flavor: | # latest on master branch, prefix dev on other branches - latest=${{ github.ref == format('refs/heads/{0}', 'master') }} - prefix=${{ github.ref != format('refs/heads/{0}', 'master') && 'dev-' || '' }} + latest=true + prefix=${{ github.ref != format('refs/heads/{0}', 'master') && 'dev-' || '' }},onlatest=true tags: | - type=raw,value=latest type=raw,value=${{ inputs.version }} labels: | org.opencontainers.image.version=${{ inputs.version }}