build: 🔨 Docker setup

Dockerfile, docker-compose and entrypoint
This commit is contained in:
Juan Rodriguez
2021-06-13 09:01:22 -05:00
parent d02df35d86
commit a17a42e792
6 changed files with 103 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
.vscode
README.md
+7
View File
@@ -0,0 +1,7 @@
RAILS_ENV=development
HOST=0.0.0.0
PORT=3000
DATABASE_NAME=url_shortener
DATABASE_USER=user
DATABASE_PASSWORD=user_12345
+24
View File
@@ -0,0 +1,24 @@
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config.
/.bundle
# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignore uploaded files in development
/storage/*
!/storage/.keep
/node_modules
/yarn-error.log
/public/assets
.byebug_history
+29
View File
@@ -0,0 +1,29 @@
FROM ruby:2.6.6-alpine
ENV APP_PATH /usr/src/app
ENV BUNDLE_VERSION 2.1.4
ENV BUNDLE_PATH /usr/local/bundle/gems
ENV RAILS_LOG_TO_STDOUT true
ENV RAILS_PORT 3000
WORKDIR $APP_PATH
EXPOSE $RAILS_PORT
RUN apk -U add --no-cache \
build-base \
postgresql-dev \
postgresql-client \
tzdata \
yarn
COPY ./entrypoint.dev.sh /usr/bin/entrypoint.sh
RUN chmod +x /usr/bin/entrypoint.sh
RUN gem install bundler --version "$BUNDLE_VERSION"
RUN gem install rubocop
COPY . .
ENTRYPOINT ["entrypoint.sh"]
+31
View File
@@ -0,0 +1,31 @@
version: '3'
services:
db:
image: postgres:12.5-alpine
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: user_12345
POSTGRES_DB: url_shortener
ports:
- 5432:5432
app:
build:
context: .
dockerfile: Dockerfile.dev
volumes:
- .:/usr/src/app
- gem_cache:/usr/local/bundle/gems
command: bundle exec rails s -p 3000 -b '0.0.0.0'
stdin_open: true
tty: true
env_file: .env.dev
ports:
- 3000:3000
depends_on:
- db
volumes:
gem_cache:
db_data:
+10
View File
@@ -0,0 +1,10 @@
#!/bin/sh
set -e
echo "Environment: $RAILS_ENV"
bundle check || bundle install --jobs 20 --retry 5
rm -f $APP_PATH/tmp/pids/server.pid
${@}