This repository contains Docker configuration for building and running the PUSK application.
- Build the image locally:
# Build with default tag
docker build -t segateekb/pusk:latest .
# Or with a specific version
docker build -t segateekb/pusk:1.0.0 .- Push to registry (optional):
docker push segateekb/pusk:latestYou can deploy this image using either Docker Compose or Docker Swarm.
- Create secrets directory and generate secrets:
# Create directory for secrets
mkdir -p secrets
# Generate encryption key
openssl rand -hex 16 > secrets/crypto_key.txt
# Generate salt
openssl rand -base64 16 > secrets/security_salt.txt
# Set proper permissions
chmod 600 secrets/crypto_key.txt secrets/security_salt.txt- Deploy with docker-compose:
docker-compose up -d
# Check logs
docker-compose logs -f- Initialize swarm (if not already done):
docker swarm init- Create Docker secrets:
# Create secrets in Swarm
openssl rand -hex 16 | docker secret create crypto_key -
openssl rand -base64 16 | docker secret create security_salt -- Deploy stack:
docker stack deploy -c docker-compose.yaml pusk- Application configuration (pusk/data/application.properties):
# Core settings remain the same
server.port=${PORT:8080}
...
# Secrets will be injected based on deployment method
cryptography.key=${CRYPTOGRAPHY_KEY}
security.salt=${SECURITY_SALT}Available in both deployment methods:
PORT: Application port (default: 8080)LOGGING_LEVEL: Log level (default: INFO)SYSLOG_ENABLED: Enable syslog (default: false)SYSLOG_HOST: Syslog server (default: localhost)SYSLOG_FACILITY: Syslog facility (default: LOCAL0)
# View logs
docker-compose logs -f
# Check container status
docker-compose ps
# Container health
docker inspect $(docker-compose ps -q) | grep -A 10 Health# View service logs
docker service logs pusk_pusk
# Check service status
docker service ls
# View tasks
docker stack ps pusk- Container won't start:
# Check logs
# For Docker Compose:
docker-compose logs
# For Swarm:
docker service logs pusk_pusk- Secret access issues:
# For Docker Compose - verify secrets exist:
ls -l secrets/
# For Swarm - list secrets:
docker secret ls- Keep secrets secure and properly permissioned
- Regular security updates
- Monitor logs for issues
- Backup data regularly
- Rotate secrets periodically
- The image contains everything needed to run the application
- Choose deployment method based on your needs:
- Docker Compose: Simpler for single-host deployment
- Docker Swarm: Better for production, multi-host deployment
- Both methods support secrets management, just implemented differently