2.8 KiB
2.8 KiB
Go Vault Quick Start
TL;DR - Run Vault in Docker Container
One-Time Setup
# 1. Rebuild Docker image with vault binary
cd ~/src/cmc-sales
docker compose -f docker-compose.prod.yml build cmc-prod-go
docker compose -f docker-compose.prod.yml up -d cmc-prod-go
# 2. Verify vault binary exists
docker exec -t cmc-prod-go ls -lh /root/vault
# 3. Test run manually
docker exec -t cmc-prod-go ./vault --mode=local \
--vaultdir=/var/www/vaultmsgs/new \
--processeddir=/var/www/vaultmsgs/cur \
--emaildir=/var/www/emails \
--dbhost=cmc-prod-db \
--dbuser=cmc \
--dbpass="xVRQI&cA?7AU=hqJ!%au" \
--dbname=cmc
# 4. Copy cron script to server
# (assuming you're on your local machine)
scp scripts/vault-cron-prod.sh cmc@sales.cmctechnologies.com.au:~/scripts/
ssh cmc@sales.cmctechnologies.com.au
chmod +x ~/scripts/vault-cron-prod.sh
mkdir -p ~/logs
# 5. Add to crontab
crontab -e
# Add: */5 * * * * /home/cmc/scripts/vault-cron-prod.sh
Manual Run (for testing)
# Run vault once
docker exec -t cmc-prod-go ./vault --mode=local \
--vaultdir=/var/www/vaultmsgs/new \
--processeddir=/var/www/vaultmsgs/cur \
--emaildir=/var/www/emails \
--dbhost=cmc-prod-db \
--dbuser=cmc \
--dbpass="xVRQI&cA?7AU=hqJ!%au" \
--dbname=cmc
Monitor Logs
# Watch the log file
tail -f ~/logs/vault-go.log
# Check cron is running
crontab -l
ps aux | grep cron
Command Variations
Local Mode (filesystem processing)
docker exec -t cmc-prod-go ./vault --mode=local \
--vaultdir=/var/www/vaultmsgs/new \
--processeddir=/var/www/vaultmsgs/cur \
--emaildir=/var/www/emails \
--dbhost=cmc-prod-db \
--dbuser=cmc \
--dbpass="xVRQI&cA?7AU=hqJ!%au" \
--dbname=cmc
Gmail Index Mode (requires OAuth setup)
docker exec -t cmc-prod-go ./vault --mode=index \
--gmail-query="is:unread newer_than:1d" \
--credentials=credentials.json \
--token=token.json \
--dbhost=cmc-prod-db \
--dbuser=cmc \
--dbpass="xVRQI&cA?7AU=hqJ!%au" \
--dbname=cmc
Troubleshooting
Vault binary not found
docker compose -f docker-compose.prod.yml build cmc-prod-go
docker compose -f docker-compose.prod.yml up -d cmc-prod-go
Check what's in vaultmsgs/new
ls -la /home/cmc/files/vaultmsgs/new/
Database connection test
docker exec -it cmc-prod-go sh
nc -zv cmc-prod-db 3306
Check if directories are mounted
docker exec -it cmc-prod-go ls -la /var/www/vaultmsgs/
Files Changed
- Dockerfile.prod.go - Added vault binary build
- docker-compose.prod.yml - Added volume mounts for vault directories
- scripts/vault-cron-prod.sh - Cron script
See VAULT_DEPLOYMENT.md for full documentation.