Compare commits

...

10 Commits

Author SHA1 Message Date
948180a09c add valkey 2025-05-13 18:01:28 +04:00
c0f01d143e disable http server 2025-04-02 21:34:48 +04:00
f15818f6b6 fix pg ready cmd 2025-03-17 17:48:19 +04:00
10443ca529 fix pg ready cmd 2025-03-17 17:46:50 +04:00
ba5e284961 fix pg ready cmd 2025-03-17 17:44:25 +04:00
d7beae23cd fix pg ready cmd 2025-03-17 17:42:54 +04:00
1f2c768dd1 fix pg ready cmd 2025-03-17 17:41:01 +04:00
a00b0457b5 fix pg ready cmd 2025-03-17 17:40:13 +04:00
97d5236d0f fix error 2025-03-17 17:17:04 +04:00
a15b6f3591 fix error 2025-03-17 17:15:26 +04:00
4 changed files with 87 additions and 12 deletions

View File

@@ -43,9 +43,11 @@ in
inherit name;
text = ''
PC_CONFIG_FILES=${configFile} RUNTIME_PATH=$(pwd)/${runtime} ${pkgs.process-compose}/bin/process-compose "$@"
PC_NO_SERVER=true PC_CONFIG_FILES=${configFile} RUNTIME_PATH=$(pwd)/${runtime} ${pkgs.process-compose}/bin/process-compose "$@"
'';
};
mkPostgres = import ./services/postgres.nix { inherit pkgs; };
mkRedis = import ./services/redis.nix { inherit pkgs; };
mkValkey = import ./services/valkey.nix { inherit pkgs; };
}

View File

@@ -140,10 +140,10 @@ in
command = "${script}/bin/run-postgres";
shutdown.signal = 2;
readiness_probe = {
exec.command = "${package}/bin/pg_isready -d template1";
exec.command = "${package}/bin/pg_isready -h ${bind} -p ${builtins.toString port} -d postgres";
initial_delay_seconds = 2;
period_seconds = 2;
timeout_seconds = 2;
period_seconds = 10;
timeout_seconds = 4;
success_threshold = 1;
failure_threshold = 5;
};

View File

@@ -17,11 +17,11 @@ in
let
generateRedisConfig = ''
cat > $RUNTIME_PATH/${name}.conf <<EOF
cat > "$RUNTIME_PATH"/${name}.conf <<EOF
${lib.optionalString default_config ''
port ${builtins.toString port}
${lib.optionalString (bind != null) "bind ${bind}"}
${lib.optionalString (port == 0) "unixsocket $RUNTIME_PATH/${name}.sock"}
${lib.optionalString (port == 0) "unixsocket \"$RUNTIME_PATH/${name}.sock\""}
${lib.optionalString (port == 0) "unixsocketperm 700"}
''}
${extra_config}
@@ -32,11 +32,11 @@ let
name = "run-redis";
text = ''
set -euo pipefail
REDISDATA=$RUNTIME_PATH/${name}/
REDISDATA="$RUNTIME_PATH"/${name}/
${
if (port == 0) then
''
REDIS_UNIX_SOCKET = $RUNTIME_PATH/${name}.sock
REDIS_UNIX_SOCKET = "$RUNTIME_PATH"/${name}.sock
export REDIS_UNIX_SOCKET
echo "Starting redis on unix socket ''${REDIS_UNIX_SOCKET}"
''
@@ -46,15 +46,15 @@ let
''
}
export REDISDATA
if [ ! -d $REDISDATA ]; then
mkdir -p $REDISDATA
if [ ! -d "$REDISDATA" ]; then
mkdir -p "$REDISDATA"
fi
${generateRedisConfig}
${package}/bin/redis-server $RUNTIME_PATH/${name}.conf --daemonize no --dir "$REDISDATA"
${package}/bin/redis-server "$RUNTIME_PATH"/${name}.conf --daemonize no --dir "$REDISDATA"
'';
};
tcpPing = "${package}/bin/redis-cli -p ${builtins.toString port} ping";
unixPing = "${package}/bin/redis-cli -s $RUNTIME_PATH/${name}.sock ping";
unixPing = "${package}/bin/redis-cli -s \"$RUNTIME_PATH\"/${name}.sock ping";
in
{
processes."${name}" = {

73
services/valkey.nix Normal file
View File

@@ -0,0 +1,73 @@
{
pkgs,
}:
let
inherit (pkgs) lib;
in
{
name,
default_config ? true,
extra_config ? '''',
package ? pkgs.valkey,
port ? 6379,
bind ? "localhost",
...
}:
let
generateValkeyConfig = ''
cat > "$RUNTIME_PATH"/${name}.conf <<EOF
${lib.optionalString default_config ''
port ${builtins.toString port}
${lib.optionalString (bind != null) "bind ${bind}"}
${lib.optionalString (port == 0) "unixsocket \"$RUNTIME_PATH/${name}.sock\""}
${lib.optionalString (port == 0) "unixsocketperm 700"}
''}
${extra_config}
EOF
'';
script = pkgs.writeShellApplication {
name = "run-valkey";
text = ''
set -euo pipefail
VALKEYDATA="$RUNTIME_PATH"/${name}/
${
if (port == 0) then
''
VALKEY_UNIX_SOCKET = "$RUNTIME_PATH"/${name}.sock
exportVALKEY_UNIX_SOCKET
echo "Starting valkey on unix socket ''${VALKEY_UNIX_SOCKET}"
''
else
''
echo "Starting valkey on port ${builtins.toString port}"
''
}
export VALKEYDATA
if [ ! -d "$VALKEYDATA" ]; then
mkdir -p "$VALKEYDATA"
fi
${generateValkeyConfig}
${package}/bin/valkey-server "$RUNTIME_PATH"/${name}.conf --daemonize no --dir "$VALKEYDATA"
'';
};
tcpPing = "${package}/bin/valkey-cli -p ${builtins.toString port} ping";
unixPing = "${package}/bin/valkey-cli -s \"$RUNTIME_PATH\"/${name}.sock ping";
in
{
processes."${name}" = {
command = "${script}/bin/run-valkey";
readiness_probe = {
exec.command = if port == 0 then unixPing else tcpPing;
initial_delay_seconds = 2;
period_seconds = 10;
timeout_seconds = 4;
success_threshold = 1;
failure_threshold = 3;
};
availability.restart = "on_failure";
};
}