For the complete documentation index, see llms.txt. This page is also available as Markdown.

FUN with Docker

We extensively use Docker at FUN. Mostly for developement, but also in production. In this document, you will find a few guidelines on how we write, run and manage our containers.

Docker/host user mapping

it is commonly assumed that Docker containers should not run commands with a privileged account as the root user. So it's a good practice to create and declare a USER in your Dockerfile. When a docker volume is mounted from the host to a container, you may then encounter permission issues with the container's user trying to create new files on the host volume (e.g. when installing dependencies with npm), and this is a good thing! But it is a bit annoying as it may break your development workflow.

A workaround to solve this issue is to use the --user option of docker(-compose) run:

$ docker-compose run --rm --user="$(id -u):$(id -g)" node yarn install

In the previous example, we force our local user id and primary group id both accessible in a shell context via the id command. This little trick can also be used in a Makefile:

# Docker
COMPOSE              = docker-compose
COMPOSE_RUN          = $(COMPOSE) run --rm
COMPOSE_RUN_NODE     = $(COMPOSE_RUN) --user="$(id -u):$(id -g)" node

# Node
YARN                 = $(COMPOSE_RUN_NODE) yarn

build-saas: ## build Sass files to CSS
    @$(YARN) sass
.PHONY: build-saas

Last updated

Was this helpful?