Engineering
01 Dec 2021

A guide to Vue Storefront and Spree deployment

author imageRafal Cymerys

Night Mode

cover image

Introduction

Vue Storefront is a next generation frontend for headless e-commerce. Our team recently delivered an out-of-the-box integration between Spree and Vue Storefront, which bridges these two great open source tools.

Compared to traditional monolithic applications, deploying a headless frontend introduces a bit of infrastructure complexity.

Let's take a look at available options.

Deploying to Heroku

Heroku is the simplest way to deploy Spee + Vue Storefront for simple, less demanding needs.

To deploy, just create a new application and connect it to your repository.

Then, go to application's setting and set the following env variables:


HOST -> 0.0.0.0
NODE_ENV -> production
BACKEND_URL -><https://example.com> (put your backend address here)

After that, you will need to restart the dynos for the changes to take effect. And that's it!

Deploying to a container service (e.g. AWS ECS of GKE)

The easiest way to deploy Vue Storefront Spree integration to modern cloud providers is to create a docker image containing your frontend. To do that, you'll need to create two files:

Dockerfile

FROM node:14.15

WORKDIR /app
ADD . /app/

RUN chmod +x docker-entrypoint.sh
RUN yarn

ENV NODE_ENV production

EXPOSE 3000
CMD './docker-entrypoint.sh'

The docker file is quite standard for nuxt deployments - it copies the code to docker image, installs dependencies and runs docker-entrypoint.sh

docker-entrypoint.sh

#!/bin/sh
yarn build
yarn start --hostname 0.0.0.0

The entrypoint file runs nuxt's build process and starts its server. yarn build can be moved to Dockerfile if you don't need dynamic env variables (Spree-VSF uses it for example to configure backend url dynamically). This way you'll speed up the process of spinning up new containers, but you'll lose the ability to reuse the same image for multiple endpoints (e.g. staging and production).

After these files are in place, you can simply run:

docker build . -t vsf-app:latest
docker tag vsf-app:latest xxxx.dkr.ecr.eu-west-2.amazonaws.com:latest
docker push xxxx.dkr.ecr.eu-west-2.amazonaws.com:latest

where [xxxx.dkr.ecr.eu-west-2.amazonaws.com](<http://xxxx.dkr.ecr.eu-west-2.amazonaws.com>) is your ECR repository address.

After that, you can run the instance on ECS or GKE using the web console and connect it to load balancer. Remember to set BACKEND_URL env variable.

Deploying directly to Linux host

Alternatively, you can deploy Vue Storefront directly to e.g. EC2 instance. To do that, follow the official guidelines of Nuxt.js for production deployment here

Summary

Vue Storefront brings Spree-based stores to a whole new level. The effort to raise the complexity of the deployment will quickly pay off by enabling new customer experiences and making development more efficient.

If you're looking for support in migrating to Vue Storefront, don't hesitate to contact us!

Explore More Blog Posts

cover image
Engineering
29 May 2025

Open-Source AI Stacks for E-Commerce

As e-commerce businesses scale, technical complexity accelerates. You’re not just seeing more revenue, you’re managing way more moving parts. It’s not just about selling more products, but about handling more customers, keeping up with demand, managing a larger product catalog, and making sure your internal operations can handle the volume.

author imageRafal Cymerys
cover image
Insights
30 Nov 2018

How Voice Is Changing Marketing in 2018 and Beyond?

Philip Kotler, the father of Marketing and author of popular textbooks on the topic, has given some concepts of marketing as a discipline into group of five eras:

author imageKasia Cieslak
cover image
Design & Accessibility
23 Apr 2020

Challenges in Designing Digital Products for African Markets

This is a summary of a talk that our CTO Rafal Cymerys gave together with Jonathan Gall during UX Berlin Meetup. Watch the video recording here.

author imageRafal Cymerys