Skip to content

my-devstack/mydevstack

MyDevStack

A modern, developer-friendly Docker image for managing AWS services running locally via AWS emulators like LocalStack or MiniStack.

Docker Multi-platform License Buy Me A Coffee

Architecture

This repository builds a unified Docker image that combines:

Features

  • All-in-one image: Frontend and backend in a single container
  • Multi-platform support: Linux (amd64, arm64), Darwin (amd64, arm64), Windows
  • Easy deployment: Simple docker-compose setup
  • Configurable: Environment variables for all settings

Quick Start

Using Docker Compose

With LocalStack

docker-compose up -d

Or use a specific docker-compose file:

Emulator Command
LocalStack docker-compose up -d
FloCi docker-compose -f docker-compose-floci.yml up -d
MiniStack docker-compose -f docker-compose-ministack.yml up -d

Then access the UI at http://localhost:3000

With FloCi

docker-compose -f docker-compose-floci.yml up -d

With MiniStack

docker-compose -f docker-compose-ministack.yml up -d

Using Docker Compose (custom)

version: '3.8'

services:
  mydevstack:
    image: beabys/mydevstack:latest
    ports:
      - "3000:3000"
    environment:
      - AWS_ENDPOINT=http://localstack:4566
      - AWS_REGION=us-east-1
    restart: unless-stopped

  localstack:
    image: localstack/localstack:latest
    ports:
      - "4566:4566"
    environment:
      - SERVICES=s3,lambda,dynamodb,sqs,sns,iam,kms
docker-compose up -d

Using Docker Directly

docker run -d \
  -p 3000:3000 \
  -e AWS_ENDPOINT=http://localhost:4566 \
  -e AWS_REGION=us-east-1 \
  beabys/mydevstack:latest

Environment Variables

Variable Default Description
PORT 3000 Frontend HTTP port
PROXY_PORT 8081 Backend proxy port
AWS_ENDPOINT http://localhost:4566 AWS emulator endpoint URL
AWS_REGION us-east-1 AWS region
AWS_ACCESS_KEY_ID test AWS access key ID
AWS_SECRET_ACCESS_KEY test AWS secret access key

Frontend Variables

Variable Default Description
VITE_AWS_ENDPOINT http://localhost:8081 Proxy endpoint (used at build time)
VITE_AWS_REGION us-east-1 AWS region (used at build time)

Note: The frontend reads settings from localStorage at runtime. To configure the endpoint, either:

  1. Use the in-app Settings page
  2. Build with environment variables baked in
  3. Set the default in the UI and clear localStorage

Backend Variables

Variable Default Description
LOG_LEVEL info Log level (debug, info, warn, error)
CORS_ALLOWED_ORIGINS * CORS allowed origins
RATE_LIMIT_ENABLED true Enable rate limiting
RATE_LIMIT_REQUESTS 100 Requests per minute

Examples

Basic Usage

docker run -d \
  --name mydevstack \
  -p 3000:3000 \
  -e AWS_ENDPOINT=http://192.168.1.100:4566 \
  -e AWS_REGION=us-us-east-1 \
  beabys/mydevstack:latest

With LocalStack

# Start LocalStack first
docker run -d \
  --name localstack \
  -p 4566:4566 \
  -e SERVICES=s3,lambda,dynamodb,sqs,sns,iam,kms,secretsmanager,ssm \
  localstack/localstack:latest

# Start MyDevStack
docker run -d \
  --name mydevstack \
  -p 3000:3000 \
  --link localstack \
  -e AWS_ENDPOINT=http://localstack:4566 \
  beabys/mydevstack:latest

With Custom Nginx Configuration

docker run -d \
  --name mydevstack \
  -p 3000:3000 \
  -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro \
  beabys/mydevstack:latest

Production Deployment with SSL

version: '3.8'

services:
  mydevstack:
    image: beabys/mydevstack:latest
    ports:
      - "3000:3000"
    environment:
      - AWS_ENDPOINT=https://aws.example.com
      - AWS_REGION=us-east-1

  nginx-proxy:
    image: nginx:alpine
    ports:
      - "443:443"
    volumes:
      - ./ssl:/etc/nginx/ssl:ro
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - mydevstack

Building from Source

Prerequisites

  • Docker 24.0+
  • Git

Build Steps

# Clone this repository
git clone https://github.com/my-devstack/mydevstack.git
cd mydevstack

# Update release.json with desired versions
# {"frontend": "1.0.0", "backend": "1.0.0"}

# Build the image
docker build -t beabys/mydevstack:latest .

# Or build for specific platform
docker build --platform linux/amd64 -t beabys/mydevstack:amd64 .

Release Process

  1. Update release.json with new versions
  2. Create a git tag with prefix v:
    git add release.json
    git commit -m "Release v1.0.0"
    git tag v1.0.0
    git push origin v1.0.0
  3. GitHub Actions will build and push the image

Supported Services

Service Status Description
S3 Buckets, Objects, Presigned URLs
Lambda Functions, Invocations
DynamoDB Tables, Items, Streams
SQS Queues, Messages
SNS Topics, Subscriptions, Publishing
IAM Users, Roles, Groups, Policies
KMS Keys, Encryption
Secrets Manager Secrets management
SSM Parameter Store
API Gateway REST APIs, HTTP APIs
Kinesis Streams, Shards
CloudFormation Stacks, Templates

Related Repositories

License

This project is licensed under the MIT License.

Code of Conduct

Please read our Code of Conduct before contributing.

Contributing

Contributions are welcome! Please read our Contributing Guidelines first.

Support

If you find this project helpful, consider buying me a coffee!

Buy Me A Coffee

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors