Skip to content

Latest commit

 

History

History
165 lines (128 loc) · 4.56 KB

File metadata and controls

165 lines (128 loc) · 4.56 KB

Finagy Development Environment Distribution

🎯 Distributable Development Environments

Instead of each developer setting up their own environment, we have created a pre-configured, distributable Docker image that contains everything needed for Finagy development.

🚀 What We've Created

Base Image: finagy_dev:latest

  • Node.js 18 with all dependencies
  • Git configured and ready
  • Development tools (Prettier, ESLint, Markdown All in One)
  • Custom .bashrc with your personalizations
  • Workspace at /finagy
  • All extensions pre-installed

📦 Team Distribution

Getting Started:

# Team members pull the image
docker pull dusansymphony/finagy_dev:latest

# Run the development environment
docker run -it --name finagy-dev dusansymphony/finagy_dev:latest bash

🎯 Benefits of This Approach

For Developers:

  • Zero setup time - just pull and run
  • Identical environments across the team
  • No "works on my machine" issues
  • Pre-configured tools ready to use

For the Project:

  • Standardized development environment
  • Easy onboarding for new team members
  • Version controlled development setup
  • Consistent tooling across all developers

For Maintenance:

  • Single source of truth for dev environment
  • Easy updates - just rebuild and push
  • Rollback capability to previous versions
  • Environment as code approach

🔄 Development Workflow

Daily Development:

# Start your development environment
docker run -it --name finagy-dev finagy_dev:latest bash

# Inside container: develop, test, iterate
# Set up API keys, work on code, etc.
exit  # Exit when done

# Commit your progress
./docker-tag.sh dev finagy-dev

Environment Updates:

# When you need to update the base environment
# 1. Make changes to devcontainer.json
# 2. Rebuild the image
# 3. Tag as new version: finagy_dev:v1.1
# 4. Push to registry
# 5. Team pulls the updated image

📋 Registry Options

Docker Hub (Public)

docker tag finagy_dev:latest dusansymphony/finagy_dev:latest
docker push dusansymphony/finagy_dev:latest

GitHub Container Registry (Private)

docker tag finagy_dev:latest ghcr.io/yourusername/finagy_dev:latest
docker push ghcr.io/yourusername/finagy_dev:latest

Private Registry

docker tag finagy_dev:latest your-registry.com/finagy_dev:latest
docker push your-registry.com/finagy_dev:latest

🏷️ Versioning Strategy

Semantic Versioning for Dev Environment:

  • finagy_dev:latest - Latest stable development environment
  • finagy_dev:v1.0 - Specific version with known configuration
  • finagy_dev:node18 - Environment with specific Node.js version
  • finagy_dev:experimental - Testing new tools/versions

Tagging Convention:

# Major version (breaking changes)
finagy_dev:v2.0

# Minor version (new tools, updates)
finagy_dev:v1.1

# Patch version (bug fixes)
finagy_dev:v1.0.1

# Feature branches
finagy_dev:feature-typescript
finagy_dev:feature-python

🎯 Team Onboarding

New Developer Setup:

  1. Install Docker
  2. Pull the image: docker pull dusansymphony/finagy_dev:latest
  3. Start developing: docker run -it --name finagy-dev dusansymphony/finagy_dev:latest bash
  4. That's it! No more setup, configuration, or tool installation

Environment Updates:

  1. Pull latest: docker pull dusansymphony/finagy_dev:latest
  2. Remove old container: docker rm finagy-dev
  3. Start fresh: docker run -it --name finagy-dev dusansymphony/finagy_dev:latest bash

🔧 Advanced Features

Multi-Architecture Support:

# Build for different architectures
docker buildx build --platform linux/amd64,linux/arm64 -t finagy_dev:latest .

Environment Variables:

# Pass environment variables
docker run -it --name finagy-dev \
  -e OPENAI_API_KEY="your-key" \
  -e FINANCIAL_DATASETS_API_KEY="your-key" \
  finagy_dev:latest bash

Volume Mounting:

# Mount your local code
docker run -it --name finagy-dev \
  -v $(pwd):/workspace \
  finagy_dev:latest bash

🎉 The Result

You've created a "Development Environment as a Service" where:

  • New developers can start coding in minutes
  • Consistent environments across all team members
  • Easy maintenance and updates
  • Version controlled development setup
  • Professional approach to development environment management

This is the future of development environment management! 🚀