diff --git a/nginx/nginx-init.container b/nginx/nginx-init.container index a211cfb..d28ea5e 100644 --- a/nginx/nginx-init.container +++ b/nginx/nginx-init.container @@ -4,8 +4,9 @@ Documentation=https://hub.docker.com/r/alpine/git After=network-online.target Before=nginx-server.service -# Only start if the service has NOT been configured +# Only start if the service has been configured ConditionPathExists=/etc/quadlets/nginx/config.env +# And if the git repo has NOT been cloned yet ConditionPathExists=!/var/lib/quadlets/nginx/.git # Start/stop this unit when the target is started/stopped diff --git a/nginx/nginx-server.container b/nginx/nginx-server.container index a5fe1eb..5659e3a 100644 --- a/nginx/nginx-server.container +++ b/nginx/nginx-server.container @@ -1,8 +1,8 @@ [Unit] Description=Nginx HTTP Server Documentation=https://hub.docker.com/_/nginx -After=network.target nginx-init.service -Requires=nginx-init.service +After=network.target nginx-init.service nginx-update.service +Requires=nginx-init.service nginx-update.service Before=nginx.target # Only start if Nginx has been configured diff --git a/nginx/nginx-update.container b/nginx/nginx-update.container new file mode 100644 index 0000000..4e6941a --- /dev/null +++ b/nginx/nginx-update.container @@ -0,0 +1,43 @@ +[Unit] +Description=Update Nginx root directory from a Git repository +Documentation=https://hub.docker.com/r/alpine/git +After=network-online.target +Before=nginx-server.service + +# Only start if the service has been configured +ConditionPathExists=/etc/quadlets/nginx/config.env +# And if the git repo has already been cloned +ConditionPathExists=/var/lib/quadlets/nginx/.git + +# Start/stop this unit when the target is started/stopped +PartOf=nginx.target + +[Container] +ContainerName=nginx-update-job +Image=docker.io/alpine/git:latest + +# Network configuration +Network=host + +# Those environment variables will be injected by podman into the container +EnvironmentFile=/etc/quadlets/nginx/config.env + +# Clone the website repository +Exec=pull +WorkingDir=/var/git + +# Volume mounts +Volume=/var/lib/quadlets/nginx:/var/git:z + +[Service] +Restart=no +TimeoutStartSec=30 + +# These environment variables are sourced to be used by systemd in the Exec* commands +EnvironmentFile=/etc/quadlets/nginx/config.env + +# This container is a job - run once to completion +Type=oneshot + +[Install] +WantedBy=nginx.target diff --git a/nginx/nginx.target b/nginx/nginx.target index 7338457..74f093a 100644 --- a/nginx/nginx.target +++ b/nginx/nginx.target @@ -1,8 +1,8 @@ [Unit] Description=Nginx Service Target Documentation=man:systemd.target(5) -Wants=nginx-server.service nginx-init.service -After=nginx-server.service nginx-init.service +Wants=nginx-server.service nginx-init.service nginx-update.service +After=nginx-server.service nginx-init.service nginx-update.service # Allow isolation - can stop/start this target independently AllowIsolate=yes # Only start if Nginx has been configured