From 042d49619c5c83bd2ada4429b209060e0c9491e9 Mon Sep 17 00:00:00 2001 From: Henne Vogelsang Date: Wed, 12 Sep 2018 22:38:07 +0200 Subject: [PATCH] Docker cleanups - Put docker-compose.yml into version control, no need to make this an example file and complicate things. - Start the docker dev-env osem on port 3000. Just as our documentation says and how we do it in vagrant. - hardcode CONTAINER_USERID so you don't have to have an docker-compose.override.yml if your UID is 1000. - Rename web service/container to osem for clarity in the logs - Keep assets also in a volume in production - warn a bit more prominently about docker-compose.override.yml --- .gitignore | 1 - CONTRIBUTING.md | 18 +++++++++++------- bin/osem-init.sh | 4 +++- ...mpose.yml.dev-example => docker-compose.yml | 10 ++++++---- docker-compose.yml.production-example | 6 ++++-- 5 files changed, 24 insertions(+), 15 deletions(-) rename docker-compose.yml.dev-example => docker-compose.yml (70%) diff --git a/.gitignore b/.gitignore index b4cba438..d5cc3093 100644 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,6 @@ pickle-email-*.html .env.development .env.test .env.local -docker-compose.yml docker-compose.override.yml .DS_Store .byebug_history diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c0339be7..26af8a1f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,6 +27,17 @@ based development environment, based on [docker](https://www.docker.com/) and [docker-compose](https://docs.docker.com/compose/). Here's a step by step guide how to set it up. +**WARNING**: Since we mount the repository into our container, your user id and +the id of the osem user inside the container need to be the same. If your user +id (`id -u`) is something else than `1000` you can copy the docker-compose +override example file and in it, set your user id in the variable +*CONTAINER_USERID*. + +```bash +sed "s/13042/`id -u`/" docker-compose.override.yml.example > docker-compose.override.yml +``` + + 1. Set up the development environment: ```bash docker-compose run --rm osem bundle exec rake setup:bootstrap @@ -54,13 +65,6 @@ how to set it up. docker-compose exec osem_1 /bin/bash -l ``` -**WARNING**: Since we mount the repository into our container, your user id and the id of the osem user inside the container need to be the same. If your user id (`id -u`) is something else than `1000` you can copy the docker-compose override example file and in it, set your user id in the variable -*CONTAINER_USERID*. - -```bash -cp docker-compose.override.yml.example docker-compose.override.yml -``` - ### with Vagrant Another option is using [Vagrant](https://www.vagrantup.com/) and [VirtualBox 5.0.10](https://www.virtualbox.org/wiki/Download_Old_Builds_5_0) to create your development environment. diff --git a/bin/osem-init.sh b/bin/osem-init.sh index 3b03cd20..476469d0 100755 --- a/bin/osem-init.sh +++ b/bin/osem-init.sh @@ -1,3 +1,5 @@ #!/bin/bash +# Setup the app if it isn't already setup bundle exec rake setup:bootstrap -foreman start +# Start the app +foreman start -p 3000 diff --git a/docker-compose.yml.dev-example b/docker-compose.yml similarity index 70% rename from docker-compose.yml.dev-example rename to docker-compose.yml index a255c391..3d6fa7b2 100644 --- a/docker-compose.yml.dev-example +++ b/docker-compose.yml @@ -5,13 +5,15 @@ services: image: postgres environment: PGDATA: /var/lib/postgresql/data/pgdata - web: - build: . - # env_file: dotenv.example + osem: + build: + context: . + args: + CONTAINER_USERID: 1000 command: /osem/bin/osem-init.sh depends_on: - database ports: - - 5000:5000 + - 3000:3000 volumes: - .:/osem diff --git a/docker-compose.yml.production-example b/docker-compose.yml.production-example index c682aa1b..e15206d8 100644 --- a/docker-compose.yml.production-example +++ b/docker-compose.yml.production-example @@ -7,21 +7,23 @@ services: PGDATA: /var/lib/postgresql/data/pgdata volumes: - database:/var/lib/postgresql/data/pgdata - web: + osem: build: . dockerfile: Dockerfile.production env_file: .env.production # see dotenv.example file depends_on: - database ports: - - 5000:5000 + - 3000:3000 volumes: - .:/osem - web-data:/osem/public/system + - web-assets:/osem/public/assets - web-logs:/osem/log # named volumes to persist data volumes: database: web-data: + web-assets: web-logs: