# Automated Deployment with Podman and rsync

This document describes how to automatically deploy the `mold_cost_calculator` application using Podman and rsync.

---

## 1. Build the Image Locally

```
podman build -t mold_cost_calculator:latest .
```

---

## 2. Save the Image as a Tarball

```
podman save -o mold_cost_calculator.tar mold_cost_calculator:latest
```

---

## 3. Transfer the Image to the Server Using rsync

Replace `user@server1:/path/to/deploy/dir` with your actual server username and path:

```
rsync -avz mold_cost_calculator.tar user@server1:/path/to/deploy/dir/
```

---

## 4. Load the Image on the Server

SSH into your server and run:

```
podman load -i /path/to/deploy/dir/mold_cost_calculator.tar
```

---

## 5. Stop and Remove the Old Container (if running)

```
podman stop mold_cost_calculator || true
podman rm mold_cost_calculator || true
```

---

## 6. Run the New Container

```
podman run -d --name mold_cost_calculator -p 5001:5001 --restart=always \
  -v /path/to/instance:/app/instance \
  -v /path/to/logs:/app/logs \
  localhost/mold_cost_calculator:latest
```
- Adjust volume paths as needed.

---

## 7. (Optional) Automate with a Script

Create a script `deploy.sh`:

```bash
#!/bin/bash
set -e

# 1. Build image
podman build -t mold_cost_calculator:latest .

# 2. Save image
podman save -o mold_cost_calculator.tar mold_cost_calculator:latest

# 3. Rsync to server
rsync -avz mold_cost_calculator.tar user@server1:/path/to/deploy/dir/

# 4. SSH and deploy on server
ssh user@server1 <<'ENDSSH'
  cd /path/to/deploy/dir/
  podman load -i mold_cost_calculator.tar
  podman stop mold_cost_calculator || true
  podman rm mold_cost_calculator || true
  podman run -d --name mold_cost_calculator -p 5001:5001 --restart=always \
    -v /path/to/instance:/app/instance \
    -v /path/to/logs:/app/logs \
    localhost/mold_cost_calculator:latest
ENDSSH
```
- Make it executable: `chmod +x deploy.sh`
- Update all `/path/to/...` and `user@server1` as needed.

---

## Notes
- Ensure Podman is installed on both local and server machines.
- Adjust volume paths and ports as needed for your environment.
- Nginx should be configured to reverse proxy to port 5001 on the server.
- For further automation, consider using CI/CD tools. 