chore(docker): create debian-podman image; parametrize Makefile and gitlab-ci over docker/podman
This commit is contained in:
parent
aebbfce109
commit
3682361fd9
@ -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
|
||||
|
||||
6
Makefile
6
Makefile
@ -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
29
docker/podman/Dockerfile
Normal 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=""
|
||||
Reference in New Issue
Block a user