Handbook
  • Introduction
  • FUN with Git
  • FUN with Python
  • FUN with Docker
  • FUN with Slack
  • Code reviews at FUN
  • Accessibility guide
Powered by GitBook
On this page

Was this helpful?

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
PreviousFUN with PythonNextFUN with Slack

Last updated 4 years ago

Was this helpful?