Spree (when using Spree Starter template) comes with a Dockerfile that can be used to build a Docker image of your application.

You can find the Dockerfile in the Dockerfile file in the root of the project or in the Spree Starter repository.

This Dockerfile is pre-configured to run Spree with PostgreSQL database and Redis. That’s the only external dependency you need to have installed on your machine to be able to run Spree.

You can later use that image to run your application in a containerized environment eg. AWS ECS, AWS Fargate, Azure Container Instances, etc.

Building the Docker image

docker build -t spree .

Running the Docker container

docker run -p 3000:3000 -e SECRET_KEY_BASE=... -e DATABASE_URL=... -e REDIS_URL=... spree

You will need to supply the following environment variables to run the container:

VariableDescriptionExample
DATABASE_URLDatabase URL, this could be your AWS RDS instance or any other PostgreSQL instancepostgres://user:pass@localhost:5432/spree
REDIS_URLRedis URL, used for background jobs processing,this could be your AWS ElastiCache instance or any other Redis instanceredis://localhost:6379/0
SECRET_KEY_BASEYou can generate this by running bin/rails secret2fad5c0b79d25e4765d3018d8c740f8c3a665f0e5c...

This is the bare minimum you need to run Spree Starter. Learn more about environment variables.