| .. | ||
| apps | ||
| packages | ||
| .dockerignore | ||
| .gitignore | ||
| docker-compose.yml | ||
| package.json | ||
| README.md | ||
| turbo.json | ||
| yarn.lock | ||
Turborepo Docker starter
This is a community-maintained example. If you experience a problem, please submit a pull request with a fix. GitHub Issues will be closed.
Using this example
Run the following command:
npx create-turbo@latest -e with-docker
What's inside?
This Turborepo includes the following:
Apps and Packages
web: a Next.js appapi: an Express server@repo/ui: a React component library@repo/logger: Isomorphic logger (a small wrapper around console.log)@repo/eslint-config: ESLint presets@repo/typescript-config: tsconfig.json's used throughout the monorepo@repo/jest-presets: Jest configurations
Each package/app is 100% TypeScript.
Docker
This repo is configured to be built with Docker, and Docker compose. To build all apps in this repo:
# Install dependencies
yarn install
# Create a network, which allows containers to communicate
# with each other, by using their container name as a hostname
docker network create app_network
# Build prod using new BuildKit engine
COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose -f docker-compose.yml build
# Start prod in detached mode
docker-compose -f docker-compose.yml up -d
Open http://localhost:3000.
To shutdown all running containers:
# Stop all running containers
docker kill $(docker ps -q) && docker rm $(docker ps -a -q)
Remote Caching
Tip
Vercel Remote Cache is free for all plans. Get started today at vercel.com.
This example includes optional remote caching. In the Dockerfiles of the apps, uncomment the build arguments for TURBO_TEAM and TURBO_TOKEN. Then, pass these build arguments to your Docker build.
You can test this behavior using a command like:
docker build -f apps/web/Dockerfile . --build-arg TURBO_TEAM=“your-team-name” --build-arg TURBO_TOKEN=“your-token“ --no-cache
Utilities
This Turborepo has some additional tools already setup for you:
- TypeScript for static type checking
- ESLint for code linting
- Jest test runner for all things JavaScript
- Prettier for code formatting