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:
|
default:
|
||||||
image:
|
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/docker:dind
|
||||||
# name: registry.uniworx.de/fradrive/fradrive/fradrive-env:latest # Debian 12.5 Bookworm
|
# name: registry.uniworx.de/fradrive/fradrive/fradrive-env:latest # Debian 12.5 Bookworm
|
||||||
# entrypoint: [""]
|
# entrypoint: [""]
|
||||||
# docker:
|
# docker:
|
||||||
# platform: x86_64
|
# platform: x86_64
|
||||||
# user: ${ENV_USER}
|
# # user: ${ENV_USER}
|
||||||
before_script:
|
# before_script:
|
||||||
- apt-get -y update
|
# - apt-get -y update
|
||||||
- apt-get -y install make
|
# - apt-get -y install make podman
|
||||||
# - chown -R ${ENV_USER} . # Change project directory ownership to (non-root) user inside docker container
|
# - chown -R ${ENV_USER} . # Change project directory ownership to (non-root) user inside docker container
|
||||||
artifacts:
|
artifacts:
|
||||||
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
|
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
|
||||||
@ -48,8 +48,8 @@ frontend image:
|
|||||||
stage: build images
|
stage: build images
|
||||||
script:
|
script:
|
||||||
# TODO: define make target for this?
|
# TODO: define make target for this?
|
||||||
- make -- --docker-build-frontend-build FRADRIVE_SERVICE=frontend
|
- make -- --docker-build-frontend-build FRADRIVE_SERVICE=frontend CONTAINER_RUNNER=podman
|
||||||
- docker image save frontend | gzip > docker/frontend/image.tar.gz
|
- podman image save frontend | gzip > docker/frontend/image.tar.gz
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- docker/frontend/image.tar.gz
|
- docker/frontend/image.tar.gz
|
||||||
@ -60,8 +60,8 @@ frontend build:
|
|||||||
- job: frontend image
|
- job: frontend image
|
||||||
artifacts: true
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- &load-frontend-image zcat docker/frontend/image.tar.gz | docker image load
|
- &load-frontend-image zcat docker/frontend/image.tar.gz | podman image load
|
||||||
- make -- --docker-run-frontend-build FRADRIVE_SERVICE=frontend
|
- make -- --docker-run-frontend-build FRADRIVE_SERVICE=frontend CONTAINER_RUNNER=podman
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- /fradrive/node_modules
|
- /fradrive/node_modules
|
||||||
@ -80,7 +80,7 @@ frontend lint:
|
|||||||
artifacts: true
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- *load-frontend-image
|
- *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
|
cache: *frontend-cache
|
||||||
|
|
||||||
frontend test:
|
frontend test:
|
||||||
@ -92,7 +92,7 @@ frontend test:
|
|||||||
artifacts: true
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- *load-frontend-image
|
- *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
|
cache: *frontend-cache
|
||||||
|
|
||||||
@ -108,14 +108,14 @@ push frontend image:
|
|||||||
script:
|
script:
|
||||||
- *load-frontend-image
|
- *load-frontend-image
|
||||||
# - docker image tag
|
# - docker image tag
|
||||||
- docker push frontend
|
- podman push frontend
|
||||||
|
|
||||||
backend image:
|
backend image:
|
||||||
stage: build images
|
stage: build images
|
||||||
script:
|
script:
|
||||||
# TODO: define make target for this?
|
# TODO: define make target for this?
|
||||||
- make -- --docker-build-backend-build FRADRIVE_SERVICE=backend
|
- make -- --docker-build-backend-build FRADRIVE_SERVICE=backend CONTAINER_RUNNER=podman
|
||||||
- docker image save backend | gzip > docker/backend/image.tar.gz
|
- podman image save backend | gzip > docker/backend/image.tar.gz
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- docker/backend/image.tar.gz
|
- docker/backend/image.tar.gz
|
||||||
@ -128,8 +128,8 @@ backend build:
|
|||||||
- job: frontend build
|
- job: frontend build
|
||||||
artifacts: true
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- &load-backend-image zcat docker/backend/image.tar.gz | docker image load
|
- &load-backend-image zcat docker/backend/image.tar.gz | podman image load
|
||||||
- make -- --docker-run-backend-build FRADRIVE_SERVICE=backend
|
- make -- --docker-run-backend-build FRADRIVE_SERVICE=backend CONTAINER_RUNNER=podman
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- /fradrive/.stack/
|
- /fradrive/.stack/
|
||||||
@ -143,7 +143,7 @@ backend lint:
|
|||||||
artifacts: true
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- *load-backend-image
|
- *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
|
cache: *backend-cache
|
||||||
|
|
||||||
backend test:
|
backend test:
|
||||||
@ -155,7 +155,7 @@ backend test:
|
|||||||
artifacts: true
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- *load-backend-image
|
- *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
|
cache: *backend-cache
|
||||||
|
|
||||||
push backend image:
|
push backend image:
|
||||||
@ -169,7 +169,7 @@ push backend image:
|
|||||||
artifacts: false
|
artifacts: false
|
||||||
script:
|
script:
|
||||||
- *load-backend-image
|
- *load-backend-image
|
||||||
- docker push backend
|
- podman push backend
|
||||||
|
|
||||||
# frontend dependencies:
|
# frontend dependencies:
|
||||||
# stage: setup
|
# stage: setup
|
||||||
|
|||||||
6
Makefile
6
Makefile
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
db ?= -cf
|
db ?= -cf
|
||||||
|
|
||||||
|
CONTAINER_RUNNER ?= docker
|
||||||
|
|
||||||
.PHONY: help
|
.PHONY: help
|
||||||
help:
|
help:
|
||||||
@echo "Nothing to see here, go away"
|
@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"
|
# run-s frontend:build --parallel "frontend:build:watch" "yesod:start"
|
||||||
|
|
||||||
--docker-build-%:
|
--docker-build-%:
|
||||||
docker compose build $(FRADRIVE_SERVICE)
|
$(CONTAINER_RUNNER) compose build $(FRADRIVE_SERVICE)
|
||||||
--docker-run-%:
|
--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