This file documents deployment processes and Cline commands for the Full Circle project.
Full Circle uses Docker for containerization and deploys to Linode servers. The process involves building a Docker image, pushing to Docker Hub, and updating the remote server via SSH.
deploy.sh: Main deployment script (build, push, remote update)deploy_at_server.sh: Runs on server to pull image and restart containerssetup_barebone_debian_at_server.sh: Initial server setup (Debian, Docker, etc.)setup_db_at_server.sh: Database setupsetup_certbot_at_server.sh: SSL certificate setupsetup_samba_share.sh: Samba file sharing setupgenerate_files_at_server.sh: Generate config files on serverlaunch.sh: Launch the app on server
- Provision Linode server with Debian.
- Run
setup_barebone_debian_at_server.shto install Docker, etc. - Run
setup_db_at_server.shfor PostgreSQL. - Run
setup_certbot_at_server.shfor SSL. - Run
generate_files_at_server.shto create docker-compose.yml, etc.
-
Prepare setup file: Create a text file with variables:
LINODE_IP=your.server.ip DOCKER_HUB_USERNAME=your_dockerhub_user IMAGE_NAME=full_circle DOCKER_CONTAINER_NAME=full_circle_app -
Run deployment: Use
execute_command:./deploy_to_linode/deploy.sh path/to/setup_file.txt- Prompts for server password.
- Builds Docker image locally.
- Pushes to Docker Hub.
- SSH to server, pulls image, docker compose down/up, runs migrations.
-
Verify: Check app loads at server URL.
- Deploy:
execute_commandwith./deploy_to_linode/deploy.sh setup.txt - Check server logs:
execute_commandwithssh root@server_ip "docker logs full_circle_app" - Restart app:
execute_commandwithssh root@server_ip "docker compose -f /home/full_circle/docker-compose-full_circle.yml restart" - Run migrations manually:
execute_commandwithssh root@server_ip "docker exec full_circle_app ./bin/migrate"
- If build fails: Check Dockerfile and assets build.
- If push fails: Verify Docker Hub credentials.
- If server update fails: Check SSH access and docker-compose.yml on server.
- Migrations fail: Check DB connection in prod config.
- Code committed and pushed to git
- Tests pass:
mix test - Assets built:
mix assets.deploy - No credo issues:
mix credo - Setup file ready with correct vars
- Server accessible via SSH