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
|
ls -la $src/ || true
|
||||||
|
|
||||||
# Process docker-compose.yml first and create it in a temp location
|
# 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
|
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
|
$src/docker-compose.yml > $TMPDIR/docker-compose.yml
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -223,6 +232,15 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
preStart = ''
|
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
|
# Ensure .env file exists with defaults if empty
|
||||||
if [ ! -s /var/lib/usda-vision/.env ]; then
|
if [ ! -s /var/lib/usda-vision/.env ]; then
|
||||||
if [ -f ${usda-vision-app}/opt/usda-vision/.env.example ]; then
|
if [ -f ${usda-vision-app}/opt/usda-vision/.env.example ]; then
|
||||||
@@ -236,18 +254,18 @@ in
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
RemainAfterExit = true;
|
RemainAfterExit = true;
|
||||||
WorkingDirectory = "${usda-vision-app}/opt/usda-vision";
|
WorkingDirectory = "/var/lib/usda-vision";
|
||||||
User = "root";
|
User = "root";
|
||||||
Group = "root";
|
Group = "root";
|
||||||
|
|
||||||
# Start: pull latest images and start containers
|
# Start: pull latest images and start containers from writable directory
|
||||||
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f ${usda-vision-app}/opt/usda-vision/docker-compose.yml up -d --build";
|
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /var/lib/usda-vision/docker-compose.yml up -d --build";
|
||||||
|
|
||||||
# Stop: gracefully stop containers
|
# 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
|
# 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;
|
TimeoutStartSec = 300;
|
||||||
TimeoutStopSec = 120;
|
TimeoutStopSec = 120;
|
||||||
|
|||||||
Reference in New Issue
Block a user