Fix Docker volumes: sync app code to /var/lib/usda-vision for writable node_modules
This commit is contained in:
30
default.nix
30
default.nix
@@ -65,8 +65,17 @@ let
|
||||
ls -la $src/ || true
|
||||
|
||||
# Process docker-compose.yml first and create it in a temp location
|
||||
# Replace .env paths AND volume mount paths to use writable directory
|
||||
if [ -f $src/docker-compose.yml ]; then
|
||||
${pkgs.gnused}/bin/sed 's|env_file:.*management-dashboard-web-app/\.env|env_file: /var/lib/usda-vision/.env|g; s|\./management-dashboard-web-app/\.env|/var/lib/usda-vision/.env|g' \
|
||||
${pkgs.gnused}/bin/sed \
|
||||
-e 's|env_file:.*management-dashboard-web-app/\.env|env_file: /var/lib/usda-vision/.env|g' \
|
||||
-e 's|\./management-dashboard-web-app/\.env|/var/lib/usda-vision/.env|g' \
|
||||
-e 's|\./management-dashboard-web-app|/var/lib/usda-vision/management-dashboard-web-app|g' \
|
||||
-e 's|\./media-api|/var/lib/usda-vision/media-api|g' \
|
||||
-e 's|\./video-remote|/var/lib/usda-vision/video-remote|g' \
|
||||
-e 's|\./scheduling-remote|/var/lib/usda-vision/scheduling-remote|g' \
|
||||
-e 's|\./vision-system-remote|/var/lib/usda-vision/vision-system-remote|g' \
|
||||
-e 's|\./camera-management-api|/var/lib/usda-vision/camera-management-api|g' \
|
||||
$src/docker-compose.yml > $TMPDIR/docker-compose.yml
|
||||
fi
|
||||
|
||||
@@ -223,6 +232,15 @@ in
|
||||
};
|
||||
|
||||
preStart = ''
|
||||
# Copy application code to writable directory if not already present or if source is newer
|
||||
echo "Syncing application code to /var/lib/usda-vision..."
|
||||
${pkgs.rsync}/bin/rsync -av --delete \
|
||||
--exclude='node_modules' \
|
||||
--exclude='.env' \
|
||||
--exclude='__pycache__' \
|
||||
--exclude='.venv' \
|
||||
${usda-vision-app}/opt/usda-vision/ /var/lib/usda-vision/
|
||||
|
||||
# Ensure .env file exists with defaults if empty
|
||||
if [ ! -s /var/lib/usda-vision/.env ]; then
|
||||
if [ -f ${usda-vision-app}/opt/usda-vision/.env.example ]; then
|
||||
@@ -236,18 +254,18 @@ in
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
WorkingDirectory = "${usda-vision-app}/opt/usda-vision";
|
||||
WorkingDirectory = "/var/lib/usda-vision";
|
||||
User = "root";
|
||||
Group = "root";
|
||||
|
||||
# Start: pull latest images and start containers
|
||||
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f ${usda-vision-app}/opt/usda-vision/docker-compose.yml up -d --build";
|
||||
# Start: pull latest images and start containers from writable directory
|
||||
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /var/lib/usda-vision/docker-compose.yml up -d --build";
|
||||
|
||||
# Stop: gracefully stop containers
|
||||
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f ${usda-vision-app}/opt/usda-vision/docker-compose.yml down";
|
||||
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /var/lib/usda-vision/docker-compose.yml down";
|
||||
|
||||
# Reload: restart containers
|
||||
ExecReload = "${pkgs.bash}/bin/bash -c '${pkgs.docker-compose}/bin/docker-compose -f ${usda-vision-app}/opt/usda-vision/docker-compose.yml down && ${pkgs.docker-compose}/bin/docker-compose -f ${usda-vision-app}/opt/usda-vision/docker-compose.yml up -d --build'";
|
||||
ExecReload = "${pkgs.bash}/bin/bash -c '${pkgs.docker-compose}/bin/docker-compose -f /var/lib/usda-vision/docker-compose.yml down && ${pkgs.docker-compose}/bin/docker-compose -f /var/lib/usda-vision/docker-compose.yml up -d --build'";
|
||||
|
||||
TimeoutStartSec = 300;
|
||||
TimeoutStopSec = 120;
|
||||
|
||||
Reference in New Issue
Block a user