Files
Poseidon/nix/containers.nix
Jonas Juselius b794fc3b68 Merge branch 'user-portal' into 'main'
User portal MVP also called *Codex

See merge request oceanbox/Poseidon!97
2025-11-26 14:36:30 +01:00

102 lines
2.0 KiB
Nix

{
env,
pkgs,
version,
atlantis,
atlantis-client,
sorcerer,
archivist,
codex,
}:
let
# Entrypoints
startArchivist = pkgs.writeScriptBin "entrypoint" ''
#!${pkgs.runtimeShell}
set -euo pipefail
exec archivist "$@"
'';
in
{
atlantis = pkgs.dockerTools.buildLayeredImage {
name = "Atlantis";
tag = version;
created = "now";
contents = [
atlantis
pkgs.dockerTools.caCertificates
]
++ pkgs.lib.optionals (env == "Debug") [
pkgs.busybox
pkgs.dockerTools.binSh
];
extraCommands = ''
mkdir -m 0777 tmp
mkdir -p ./app
cp -r ${atlantis}/lib/Atlantis/* ./app/
cp -r ${atlantis-client}/public ./app/
'';
config = {
cmd = [ "Server" ];
workingDir = "/app";
env = [
"SERVER_CONTENT_ROOT=/app/public"
];
};
};
sorcerer = pkgs.dockerTools.buildLayeredImage {
name = "Sorcerer";
tag = version;
created = "now";
contents = [
sorcerer
pkgs.dockerTools.caCertificates
]
++ pkgs.lib.optionals (env == "Debug") [
pkgs.busybox
pkgs.dockerTools.binSh
];
extraCommands = ''
mkdir -p ./app
cp -r ${sorcerer}/lib/Sorcerer/* ./app/
'';
config = {
cmd = [ "Sorcerer" ];
workingDir = "/app";
};
};
archivist = pkgs.dockerTools.buildLayeredImage {
name = "archivist";
tag = archivist.version;
created = "now";
contents = [
archivist
]
++ pkgs.lib.optionals (env == "Debug") [
pkgs.busybox
pkgs.dockerTools.binSh
];
compressor = "none";
extraCommands = ''
mkdir -p ./app
cp -r ${archivist}/lib/Archivist/* ./app/
'';
config = {
entrypoint = [ "${startArchivist}/bin/entrypoint" ];
workingDir = "/app";
env = [
"ARCHMAESTER_URL=https://maps.oceanbox.io"
"ARCHMAESTER_AUTH=admin:en-to-tre-fire"
];
};
};
codex = pkgs.callPackage ../src/Codex/container.nix { server = codex; };
}