From 63636ec56254d8015b6639932540a9052412901a Mon Sep 17 00:00:00 2001 From: Brendan McDevitt Date: Wed, 30 Mar 2022 22:52:39 -0500 Subject: [PATCH] docker-compose and postgres basic rails app skeleton --- Dockerfile | 17 +++++++++++++++++ Gemfile | 4 ++-- bin/docker_rebuild.sh | 5 +++++ config/database.yml | 26 +++++++++----------------- docker-compose.yml | 18 ++++++++++++++++++ entrypoint.sh | 9 +++++++++ 6 files changed, 60 insertions(+), 19 deletions(-) create mode 100755 bin/docker_rebuild.sh create mode 100644 docker-compose.yml create mode 100644 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index e69de29..9fb1371 100644 --- a/Dockerfile +++ b/Dockerfile @@ -0,0 +1,17 @@ +# syntax=docker/dockerfile:1 +FROM ruby:2.7.0 +RUN apt-get update -qq && apt-get install -y nodejs postgresql-client +WORKDIR /data_importer +COPY Gemfile /data_importer/Gemfile +COPY Gemfile.lock /data_importer/Gemfile.lock +RUN bundle install + +# Add a script to be executed every time the container starts. +COPY entrypoint.sh /usr/bin/ +RUN chmod +x /usr/bin/entrypoint.sh +ENTRYPOINT ["entrypoint.sh"] +EXPOSE 3000 + +# Configure the main process to run when running the image +CMD ["rails", "server", "-b", "0.0.0.0"] + diff --git a/Gemfile b/Gemfile index 1e8093b..175f470 100644 --- a/Gemfile +++ b/Gemfile @@ -5,8 +5,8 @@ ruby '2.7.0' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.2.3' -# Use sqlite3 as the database for Active Record -gem 'sqlite3' +# Use postgres as the database for Active Record +gem 'pg' # Use Puma as the app server gem 'puma', '~> 3.11' # Use SCSS for stylesheets diff --git a/bin/docker_rebuild.sh b/bin/docker_rebuild.sh new file mode 100755 index 0000000..ae7524c --- /dev/null +++ b/bin/docker_rebuild.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# docker rebuild and bundle install +# updates Gemfile.lock + +docker-compose run web bundle install diff --git a/config/database.yml b/config/database.yml index 0d02f24..70ad3a1 100644 --- a/config/database.yml +++ b/config/database.yml @@ -1,25 +1,17 @@ -# SQLite version 3.x -# gem install sqlite3 -# -# Ensure the SQLite 3 gem is defined in your Gemfile -# gem 'sqlite3' -# default: &default - adapter: sqlite3 - pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> - timeout: 5000 + adapter: postgresql + encoding: unicode + host: db + username: postgres + password: password + pool: 5 development: <<: *default - database: db/development.sqlite3 + database: data_importer_development + -# Warning: The database defined as "test" will be erased and -# re-generated from your development database when you run "rake". -# Do not set this db to the same as development or production. test: <<: *default - database: db/test.sqlite3 + database: data_importer_test -production: - <<: *default - database: db/production.sqlite3 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..64d69bf --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.3" +services: + db: + image: postgres + volumes: + - ./tmp/db:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: password + web: + build: . + command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" + volumes: + - .:/data_importer + ports: + - "3000:3000" + depends_on: + - db + diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..236aedf --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e + +# Remove a potentially pre-existing server.pid for Rails. +rm -f /myapp/tmp/pids/server.pid + +# Then exec the container's main process (what's set as CMD in the Dockerfile). +exec "$@" +