chore(docker): create debian-podman image; parametrize Makefile and gitlab-ci over docker/podman

This commit is contained in:
Sarah Vaupel 2024-08-19 03:23:16 +02:00
parent aebbfce109
commit 3682361fd9
3 changed files with 52 additions and 21 deletions

View File

@ -18,16 +18,16 @@ variables:
default:
image:
name: registry.uniworx.de/uniworx/containers/debian:12.5
name: registry.uniworx.de/fradrive/fradrive/debian-podman:latest
# name: registry.uniworx.de/fradrive/fradrive/docker:dind
# name: registry.uniworx.de/fradrive/fradrive/fradrive-env:latest # Debian 12.5 Bookworm
# entrypoint: [""]
# docker:
# platform: x86_64
# user: ${ENV_USER}
before_script:
- apt-get -y update
- apt-get -y install make
# # user: ${ENV_USER}
# before_script:
# - apt-get -y update
# - apt-get -y install make podman
# - chown -R ${ENV_USER} . # Change project directory ownership to (non-root) user inside docker container
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
@ -48,8 +48,8 @@ frontend image:
stage: build images
script:
# TODO: define make target for this?
- make -- --docker-build-frontend-build FRADRIVE_SERVICE=frontend
- docker image save frontend | gzip > docker/frontend/image.tar.gz
- make -- --docker-build-frontend-build FRADRIVE_SERVICE=frontend CONTAINER_RUNNER=podman
- podman image save frontend | gzip > docker/frontend/image.tar.gz
artifacts:
paths:
- docker/frontend/image.tar.gz
@ -60,8 +60,8 @@ frontend build:
- job: frontend image
artifacts: true
script:
- &load-frontend-image zcat docker/frontend/image.tar.gz | docker image load
- make -- --docker-run-frontend-build FRADRIVE_SERVICE=frontend
- &load-frontend-image zcat docker/frontend/image.tar.gz | podman image load
- make -- --docker-run-frontend-build FRADRIVE_SERVICE=frontend CONTAINER_RUNNER=podman
artifacts:
paths:
- /fradrive/node_modules
@ -80,7 +80,7 @@ frontend lint:
artifacts: true
script:
- *load-frontend-image
- make -- --docker-run-frontend-lint FRADRIVE_SERVICE=frontend
- make -- --docker-run-frontend-lint FRADRIVE_SERVICE=frontend CONTAINER_RUNNER=podman
cache: *frontend-cache
frontend test:
@ -92,7 +92,7 @@ frontend test:
artifacts: true
script:
- *load-frontend-image
- make -- --docker-run-frontend-test FRADRIVE_SERVICE=frontend
- make -- --docker-run-frontend-test FRADRIVE_SERVICE=frontend CONTAINER_RUNNER=podman
cache: *frontend-cache
@ -108,14 +108,14 @@ push frontend image:
script:
- *load-frontend-image
# - docker image tag
- docker push frontend
- podman push frontend
backend image:
stage: build images
script:
# TODO: define make target for this?
- make -- --docker-build-backend-build FRADRIVE_SERVICE=backend
- docker image save backend | gzip > docker/backend/image.tar.gz
- make -- --docker-build-backend-build FRADRIVE_SERVICE=backend CONTAINER_RUNNER=podman
- podman image save backend | gzip > docker/backend/image.tar.gz
artifacts:
paths:
- docker/backend/image.tar.gz
@ -128,8 +128,8 @@ backend build:
- job: frontend build
artifacts: true
script:
- &load-backend-image zcat docker/backend/image.tar.gz | docker image load
- make -- --docker-run-backend-build FRADRIVE_SERVICE=backend
- &load-backend-image zcat docker/backend/image.tar.gz | podman image load
- make -- --docker-run-backend-build FRADRIVE_SERVICE=backend CONTAINER_RUNNER=podman
artifacts:
paths:
- /fradrive/.stack/
@ -143,7 +143,7 @@ backend lint:
artifacts: true
script:
- *load-backend-image
- make -- --docker-run-backend-lint FRADRIVE_SERVICE=backend
- make -- --docker-run-backend-lint FRADRIVE_SERVICE=backend CONTAINER_RUNNER=podman
cache: *backend-cache
backend test:
@ -155,7 +155,7 @@ backend test:
artifacts: true
script:
- *load-backend-image
- make -- --docker-run-backend-test FRADRIVE_SERVICE=backend
- make -- --docker-run-backend-test FRADRIVE_SERVICE=backend CONTAINER_RUNNER=podman
cache: *backend-cache
push backend image:
@ -169,7 +169,7 @@ push backend image:
artifacts: false
script:
- *load-backend-image
- docker push backend
- podman push backend
# frontend dependencies:
# stage: setup

View File

@ -2,6 +2,8 @@
db ?= -cf
CONTAINER_RUNNER ?= docker
.PHONY: help
help:
@echo "Nothing to see here, go away"
@ -167,6 +169,6 @@ well-known/.well-known:
# run-s frontend:build --parallel "frontend:build:watch" "yesod:start"
--docker-build-%:
docker compose build $(FRADRIVE_SERVICE)
$(CONTAINER_RUNNER) compose build $(FRADRIVE_SERVICE)
--docker-run-%:
docker compose run -u `id -u`:`id -g` --env FRADRIVE_MAKE_TARGET=$* $(FRADRIVE_SERVICE)
$(CONTAINER_RUNNER) compose run -u `id -u`:`id -g` --env FRADRIVE_MAKE_TARGET=$* $(FRADRIVE_SERVICE)

29
docker/podman/Dockerfile Normal file
View File

@ -0,0 +1,29 @@
# Debian-based podman daemon image for building docker images
# inside docker containers (e.g. gitlab runners).
#
# Yoinked with love from:
# https://www.redhat.com/sysadmin/podman-inside-container
FROM registry.uniworx.de/uniworx/containers/debian:12.5
RUN apt-get -y update
RUN apt-get -y install make podman fuse-overlayfs
RUN useradd podman; \
echo podman:10000:5000 > /etc/subuid; \
echo podman:10000:5000 > /etc/subgid;
VOLUME /var/lib/containers
VOLUME /home/podman/.local/share/containers
ADD https://raw.githubusercontent.com/containers/image_build/main/podman/containers.conf /etc/containers/containers.conf
ADD https://raw.githubusercontent.com/containers/image_build/main/podman/podman-containers.conf /home/podman/.config/containers/containers.conf
RUN chown podman:podman -R /home/podman
# chmod containers.conf and adjust storage.conf to enable Fuse storage.
RUN chmod 644 /etc/containers/containers.conf; sed -i -e 's|^#mount_program|mount_program|g' -e '/additionalimage.*/a "/var/lib/shared",' -e 's|^mountopt[[:space:]]*=.*$|mountopt = "nodev,fsync=0"|g' /etc/containers/libpod.conf
RUN mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers /var/lib/shared/vfs-images /var/lib/shared/vfs-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock; touch /var/lib/shared/vfs-images/images.lock; touch /var/lib/shared/vfs-layers/layers.lock
ENV _CONTAINERS_USERNS_CONFIGURED=""