coolify integration.
This commit is contained in:
150
app/README.md
Normal file
150
app/README.md
Normal file
@@ -0,0 +1,150 @@
|
||||
# Docker Deployment Manager - Desktop App
|
||||
|
||||
Electron desktop app for managing Docker deployments across multiple Linux servers.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```powershell
|
||||
# 1. Install dependencies
|
||||
npm install
|
||||
|
||||
# 2. Configure SSH credentials
|
||||
cp .env.example .env
|
||||
# Edit .env with your SSH_USERNAME and SSH_PASSWORD
|
||||
|
||||
# 3. Run the app
|
||||
npm start
|
||||
|
||||
# For development with DevTools:
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
### Dashboard
|
||||
The main screen shows all projects in your `C:\.bucket\Repos.Git` directory that have Docker configurations.
|
||||
|
||||
| Column | Description |
|
||||
|--------|-------------|
|
||||
| **Project** | Project name and path |
|
||||
| **Local** | Click to see what files are present/missing |
|
||||
| **Deployed** | Whether the project exists on the selected server |
|
||||
| **Running** | Whether the container is currently running |
|
||||
| **Diff** | Compare local vs deployed docker-compose.yml |
|
||||
| **Actions** | Build, Deploy buttons |
|
||||
|
||||
### Local Status (Click for Details)
|
||||
Shows what files each project has:
|
||||
|
||||
- **Dockerfile** - Container build instructions (you create this manually)
|
||||
- **docker-compose.yml** - Runtime config (ports, env, volumes)
|
||||
- **build-image-tar.ps1** - Script to build and package Docker image
|
||||
- **.dockerignore** - Files to exclude from Docker image
|
||||
|
||||
If files are missing, click the status badge to see what's needed and how to fix it.
|
||||
|
||||
### Server Management
|
||||
Click "Servers" to add your Linux servers:
|
||||
|
||||
1. **Name**: Friendly name (e.g., "Production Server")
|
||||
2. **Host**: IP address (e.g., 192.168.69.4)
|
||||
3. **Username**: SSH username (optional, uses .env by default)
|
||||
|
||||
### Actions
|
||||
|
||||
#### Build
|
||||
Runs the project's `build-image-tar.ps1` script which:
|
||||
1. Builds the Docker image: `docker buildx build --platform linux/amd64`
|
||||
2. Saves to tar: `docker save -o project.tar`
|
||||
|
||||
#### Deploy
|
||||
1. Uploads the tar file to `~/containers/{project}/`
|
||||
2. Uploads docker-compose.yml
|
||||
3. Runs `docker load -i project.tar`
|
||||
4. Runs `docker compose up -d`
|
||||
|
||||
#### Compare (Diff)
|
||||
Shows local vs deployed docker-compose.yml side by side.
|
||||
- **Pull**: Download server version to local (sync your source of truth)
|
||||
- **Push**: Upload local version to server
|
||||
|
||||
### Init Project
|
||||
If a project is missing files, the Details modal shows:
|
||||
- Which files are missing
|
||||
- Commands to create them
|
||||
|
||||
Click "Run CLI Init" to generate missing files using the CLI tool.
|
||||
|
||||
## Configuration
|
||||
|
||||
### SSH Credentials (.env)
|
||||
```
|
||||
SSH_USERNAME=deployer
|
||||
SSH_PASSWORD=your-password-here
|
||||
```
|
||||
|
||||
### Server Config (deployment-config.json)
|
||||
Auto-generated when you add servers:
|
||||
```json
|
||||
{
|
||||
"servers": [
|
||||
{ "id": "1", "name": "Server 1", "host": "192.168.69.4" },
|
||||
{ "id": "2", "name": "Server 2", "host": "192.168.69.5" }
|
||||
],
|
||||
"projectsRoot": "C:\\.bucket\\Repos.Git"
|
||||
}
|
||||
```
|
||||
|
||||
## Server Convention
|
||||
|
||||
The app expects this structure on your Linux servers:
|
||||
|
||||
```
|
||||
~/containers/
|
||||
├── game.justone/
|
||||
│ ├── docker-compose.yml
|
||||
│ ├── .env (optional)
|
||||
│ ├── data/ (optional)
|
||||
│ └── game.justone.tar
|
||||
├── another-project/
|
||||
│ └── ...
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
### First Time Setup
|
||||
1. Create Dockerfile manually for your project (each project is different)
|
||||
2. Use CLI or app to generate docker-compose.yml and build scripts
|
||||
3. Add your server(s) in the app
|
||||
4. Build and deploy
|
||||
|
||||
### Regular Deployment
|
||||
1. Make code changes
|
||||
2. Click "Build" to create new tar
|
||||
3. Click "Deploy" to push to server
|
||||
|
||||
### Checking Differences
|
||||
If you manually edited something on the server:
|
||||
1. Select server and click "Scan Server"
|
||||
2. Click "Compare" on the project
|
||||
3. Review differences
|
||||
4. Click "Pull" to update your local copy (source of truth)
|
||||
|
||||
## Files
|
||||
|
||||
```
|
||||
app/
|
||||
├── main/
|
||||
│ ├── index.js # Electron main process + IPC handlers
|
||||
│ ├── ssh-service.js # SSH/SFTP operations
|
||||
│ ├── project-scanner.js # Scans local projects for Docker files
|
||||
│ └── server-scanner.js # Scans remote ~/containers/* via SSH
|
||||
├── renderer/
|
||||
│ ├── index.html # Dashboard UI
|
||||
│ ├── styles.css # Dark theme
|
||||
│ └── app.js # Frontend logic
|
||||
├── preload.js # IPC bridge (contextBridge)
|
||||
├── .env # SSH credentials (not committed)
|
||||
├── .env.example # Template
|
||||
└── package.json
|
||||
```
|
||||
Reference in New Issue
Block a user