Move riverside to arion with postgres companion service
riverside needs a postgres sidecar which oci-containers can't express.
Also adds docker to arion PATH (fixes forgejo-arion) and creates
/var/riverside/{files,postgres} state directories.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d0a9b5337f
commit
93506862ec
3 changed files with 78 additions and 8 deletions
52
nixos/arion-riverside/arion-compose.nix
Normal file
52
nixos/arion-riverside/arion-compose.nix
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
project.name = "riverside";
|
||||||
|
|
||||||
|
networks.riverside.external = false;
|
||||||
|
|
||||||
|
services = {
|
||||||
|
app = {
|
||||||
|
service = {
|
||||||
|
image = "forge.quinefoundation.com/ironmagma/riverside@sha256:23c17a769f001c0c41eb78119183549f884555e5604f017b1e03858dc5888d60";
|
||||||
|
container_name = "riverside";
|
||||||
|
restart = "unless-stopped";
|
||||||
|
networks = [ "riverside" ];
|
||||||
|
environment = {
|
||||||
|
DB_HOST = "postgres";
|
||||||
|
DB_NAME = "drupal";
|
||||||
|
DB_USER = "drupal";
|
||||||
|
DB_PASS = "drupal";
|
||||||
|
SITE_NAME = "Portfolio";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"/var/riverside/files:/var/www/html/web/sites/default/files"
|
||||||
|
];
|
||||||
|
ports = [ "3011:8080" ];
|
||||||
|
depends_on = [ "postgres" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
postgres = {
|
||||||
|
service = {
|
||||||
|
image = "postgres:18-alpine";
|
||||||
|
container_name = "riverside-postgres";
|
||||||
|
restart = "unless-stopped";
|
||||||
|
networks = [ "riverside" ];
|
||||||
|
environment = {
|
||||||
|
POSTGRES_DB = "drupal";
|
||||||
|
POSTGRES_USER = "drupal";
|
||||||
|
POSTGRES_PASSWORD = "drupal";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"/var/riverside/postgres:/var/lib/postgresql/data"
|
||||||
|
];
|
||||||
|
healthcheck = {
|
||||||
|
test = [ "CMD-SHELL" "pg_isready -U drupal -d drupal" ];
|
||||||
|
interval = "5s";
|
||||||
|
timeout = "5s";
|
||||||
|
retries = 20;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
3
nixos/arion-riverside/arion-pkgs.nix
Normal file
3
nixos/arion-riverside/arion-pkgs.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
import <nixpkgs> {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
}
|
||||||
|
|
@ -39,6 +39,15 @@
|
||||||
${pkgs.arion}/bin/arion down 2>> /var/log/start-arion-run.log >> /var/log/start-arion-run.log
|
${pkgs.arion}/bin/arion down 2>> /var/log/start-arion-run.log >> /var/log/start-arion-run.log
|
||||||
${pkgs.arion}/bin/arion up -d 2>> /var/log/start-arion-run.log >> /var/log/start-arion-run.log
|
${pkgs.arion}/bin/arion up -d 2>> /var/log/start-arion-run.log >> /var/log/start-arion-run.log
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
start-arion-riverside-run = pkgs.writeShellScriptBin "start-arion-riverside-run" ''
|
||||||
|
set -e
|
||||||
|
export PATH="${pkgs.nixVersions.stable}/bin:${pkgs.docker}/bin:$PATH"
|
||||||
|
export NIX_PATH="nixpkgs=${pkgs.path}:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels"
|
||||||
|
cd /root/petersweb-infra/nixos/arion-riverside
|
||||||
|
${pkgs.arion}/bin/arion down 2>> /var/log/start-arion-riverside-run.log >> /var/log/start-arion-riverside-run.log
|
||||||
|
${pkgs.arion}/bin/arion up -d 2>> /var/log/start-arion-riverside-run.log >> /var/log/start-arion-riverside-run.log
|
||||||
|
'';
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
(import ./cloned_repos {inherit pkgs pullomatic lib;})
|
(import ./cloned_repos {inherit pkgs pullomatic lib;})
|
||||||
|
|
@ -83,6 +92,7 @@ in {
|
||||||
# For docker-compose like setups
|
# For docker-compose like setups
|
||||||
pkgs.arion
|
pkgs.arion
|
||||||
start-arion-run
|
start-arion-run
|
||||||
|
start-arion-riverside-run
|
||||||
];
|
];
|
||||||
|
|
||||||
swapDevices = [
|
swapDevices = [
|
||||||
|
|
@ -103,9 +113,22 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services.riverside-arion = {
|
||||||
|
description = "Riverside via Arion";
|
||||||
|
after = [ "network.target" "docker.service" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart = "${start-arion-riverside-run}/bin/start-arion-riverside-run";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"d /home/ironmagma/.config 0755 ${username} users"
|
"d /home/ironmagma/.config 0755 ${username} users"
|
||||||
"d /root/.config 0755 ${username} users"
|
"d /root/.config 0755 ${username} users"
|
||||||
|
"d /var/riverside/files 0755 root root"
|
||||||
|
"d /var/riverside/postgres 0755 root root"
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "${hostname}";
|
networking.hostName = "${hostname}";
|
||||||
|
|
@ -209,14 +232,6 @@ in {
|
||||||
ports = ["3010:8080"];
|
ports = ["3010:8080"];
|
||||||
};
|
};
|
||||||
|
|
||||||
"riverside" = {
|
|
||||||
autoStart = true;
|
|
||||||
image = "forge.quinefoundation.com/ironmagma/riverside@sha256:23c17a769f001c0c41eb78119183549f884555e5604f017b1e03858dc5888d60";
|
|
||||||
volumes = [];
|
|
||||||
environment = {};
|
|
||||||
ports = ["3011:8080"];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue