From e0d79a26c0791f1fd96fcd4933c1ac5a2cf32943 Mon Sep 17 00:00:00 2001 From: Oliver Eyton-Williams Date: Mon, 16 Nov 2020 15:03:18 +0100 Subject: [PATCH] feat: create docker dev environment --- .env | 2 ++ .gitignore | 1 + Dockerfile-dev | 40 ++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 13 +++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 .env create mode 100644 Dockerfile-dev create mode 100644 docker-compose.yml diff --git a/.env b/.env new file mode 100644 index 00000000..1a63eeff --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +USER_ID=1000 +GROUP_ID=1000 diff --git a/.gitignore b/.gitignore index 53bbb745..6de43d68 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store .bundle +.bash_history log tmp public/assets diff --git a/Dockerfile-dev b/Dockerfile-dev new file mode 100644 index 00000000..54f2f2e2 --- /dev/null +++ b/Dockerfile-dev @@ -0,0 +1,40 @@ +FROM ruby:2.6.5 + +ENV LANG=C.UTF-8 +ENV ENABLE_SERVICE_WORKER=true + +ARG USER_ID +ARG GROUP_ID + +RUN apt-get update && \ + apt-get -y install git nodejs libcurl4 && \ + gem install bundler + +# Create the dev user and set up a home dir +RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \ + groupadd -g ${GROUP_ID} devuser &&\ + useradd -l -u ${USER_ID} -g devuser devuser &&\ + install -d -m 0755 -o devuser -g devuser /home/devuser &&\ + chown --changes --silent --no-dereference --recursive \ + --from=33:33 ${USER_ID}:${GROUP_ID} \ + /home/devuser \ + ;fi + +# Host directories cannot be mounted by Dockerfiles so we have to use +# a temporary directory to hold the lock files while the gems are installed. +WORKDIR /devdocs/ + +COPY Gemfile Gemfile.lock Rakefile /devdocs/ + +RUN bundle install && rm -rf /devdocs/ + +WORKDIR /home/devuser/ + +EXPOSE 9292 + +# This entrypoint lets you +# docker-compose run --rm --service-ports devdocs +# straight into a bash shell +ENTRYPOINT [ "/bin/bash" ] + +USER devuser diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..a9e07e11 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3.7' +services: + devdocs: + build: + context: . + dockerfile: Dockerfile-dev + args: + USER_ID: ${USER_ID:-0} + GROUP_ID: ${GROUP_ID:-0} + volumes: + - ${PWD}:/home/devuser + ports: + - "9292:9292"