Run node from a docker container
Based on ubuntu:16.04 image, as www-data user with gosu, with some extra packages & modules.
docker pull mgcrea/node:6- packages added:
build-essential
ffmpeg
git
graphicsmagick-imagemagick-compat
iputils-ping
jq
libav-tools
libcairo2-dev
libgif-dev
libjpeg8-dev
libkrb5-dev
libpango1.0-dev
mediainfo
nano
net-tools
openssl
rsync
screen
software-properties-common
tmux
vim
- node_modules added:
nodemon
yarn
docker run -d --restart=always \
-v /srv/www:/srv/www \
-p 3000:3000 \
--name container_name \
mgcrea/node:6docker-compose up -dYou can easily override the user/group used by the image using environment variables. Like in the following compose example:
# https://docs.docker.com/compose/yml/
node:
container_name: node
hostname: node
image: mgcrea/node:6
environment:
- NODE_USER=www-data
- NODE_GROUP=www-data
- UID=33
- GID=33
ports:
- "3000:3000"
volumes:
- ./www:/srv/www
restart: alwaysNOTE: for security reasons, starting this docker container will change the permissions of all files in your www directory to a new, docker-only user. This ensures that the docker container can access the files.
Create and inspect a new instance
docker run --rm -it mgcrea/node:latest script -q -c "TERM=xterm /bin/bash" /dev/nullInspect a running instance
docker exec -it test_node script -q -c "TERM=xterm /bin/bash" /dev/null