Fix deploy: API runs in Docker container, use docker cp/exec/restart
Some checks failed
Deploy / detect (push) Successful in 5s
Deploy / deploy-api (push) Failing after 22s
Deploy / tag-deploy (push) Has been cancelled
Deploy / deploy-frontend (push) Has been cancelled

EC2 runs the API in a Docker container named filamenteka-api.
Use docker cp for file transfer, docker exec for migrations,
and docker restart to apply changes.
This commit is contained in:
DaX
2026-03-05 02:04:55 +01:00
parent da79307461
commit 70b7713f2e

View File

@@ -145,7 +145,7 @@ jobs:
if: needs.detect.outputs.migrations == 'true' if: needs.detect.outputs.migrations == 'true'
run: | run: |
cat > /tmp/migrate-params.json << 'PARAMS' cat > /tmp/migrate-params.json << 'PARAMS'
{"commands":["docker ps -a 2>/dev/null || echo 'no docker'","cat /home/ec2-user/docker-compose.yml 2>/dev/null || echo 'no compose file'","docker inspect $(docker ps -q) 2>/dev/null | head -50 || echo 'no containers'","ls -la /home/ec2-user/ 2>/dev/null","docker exec $(docker ps -q | head -1) ls -la /app/ 2>/dev/null || echo 'exec failed'","docker exec $(docker ps -q | head -1) cat /app/package.json 2>/dev/null || echo 'no package.json'"]} {"commands":["set -e","cd /tmp","rm -rf repo.tar.gz filamenteka","curl -sf -o repo.tar.gz https://git.demirix.dev/dax/Filamenteka/archive/main.tar.gz","tar xzf repo.tar.gz","docker cp filamenteka/database filamenteka-api:/app/database","docker cp filamenteka/api/migrate.js filamenteka-api:/app/migrate.js","rm -rf repo.tar.gz filamenteka","docker exec filamenteka-api ls -la /app/database/migrations/","docker exec -w /app filamenteka-api node migrate.js"]}
PARAMS PARAMS
CMD_ID=$(aws ssm send-command \ CMD_ID=$(aws ssm send-command \
--region $AWS_REGION \ --region $AWS_REGION \
@@ -192,7 +192,7 @@ jobs:
id: deploy id: deploy
run: | run: |
cat > /tmp/deploy-params.json << 'PARAMS' cat > /tmp/deploy-params.json << 'PARAMS'
{"commands":["set -e","cd /app","cp server.js server.js.backup","curl -sf -o server.js https://git.demirix.dev/dax/Filamenteka/raw/branch/main/api/server.js","pkill -f 'node server.js' || true","sleep 1","cd /app && nohup /usr/local/bin/node server.js > /var/log/node-api.log 2>&1 &","sleep 2","pgrep -f 'node server.js' && echo API deployed and restarted"]} {"commands":["set -e","docker exec filamenteka-api cp /app/server.js /app/server.js.backup","curl -sf -o /tmp/server.js https://git.demirix.dev/dax/Filamenteka/raw/branch/main/api/server.js","docker cp /tmp/server.js filamenteka-api:/app/server.js","rm -f /tmp/server.js","docker restart filamenteka-api","echo API deployed and restarted"]}
PARAMS PARAMS
CMD_ID=$(aws ssm send-command \ CMD_ID=$(aws ssm send-command \
--region $AWS_REGION \ --region $AWS_REGION \
@@ -253,7 +253,7 @@ jobs:
run: | run: |
echo "Rolling back to server.js.backup..." echo "Rolling back to server.js.backup..."
cat > /tmp/rollback-params.json << 'PARAMS' cat > /tmp/rollback-params.json << 'PARAMS'
{"commands":["cd /app","if [ -f server.js.backup ]; then cp server.js.backup server.js && pkill -f 'node server.js' || true && sleep 1 && cd /app && nohup /usr/local/bin/node server.js > /var/log/node-api.log 2>&1 & && echo Rollback complete; else echo No backup found; fi"]} {"commands":["docker exec filamenteka-api sh -c 'if [ -f /app/server.js.backup ]; then cp /app/server.js.backup /app/server.js; fi'","docker restart filamenteka-api","echo Rollback complete"]}
PARAMS PARAMS
aws ssm send-command \ aws ssm send-command \
--region $AWS_REGION \ --region $AWS_REGION \