Attempt to add Docker (via Rails 7.1 file)
Some checks reported errors
continuous-integration/drone/push Build encountered an error
continuous-integration/drone/pr Build encountered an error

This commit is contained in:
Andrew Tomaka 2023-03-08 19:35:40 -05:00
parent fd75a7c6ff
commit faef71fb9c
Signed by: atomaka
GPG key ID: 61209BF70A5B18BE
4 changed files with 138 additions and 37 deletions

28
.dockerignore Normal file
View file

@ -0,0 +1,28 @@
# See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files.
# Ignore bundler config.
/.bundle
# Ignore all default key files
config/master.key
config/credentials/*.key
# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignore pidfiles, but keep the directory.
/tmp/pids/*
!/tmp/pids/
!/tmp/pids/.keep
# Ignore storage (uploaded files in development and any SQLite databases).
/storage/*
!/storage/.keep
/tmp/storage/*
!/tmp/storage/
!/tmp/storage/.keep
/public/assets

View file

@ -15,8 +15,7 @@ steps:
volumes:
- name: bundle
path: /usr/local/bundle
commands:
- bin/rails zeitwerk:check
commands: - bin/rails zeitwerk:check
depends_on:
- install
@ -44,3 +43,38 @@ steps:
volumes:
- name: bundle
temp: {}
trigger:
branch:
exclude: master
event: push
---
name: deploy
kind: pipeline
steps:
- name: docker-build
image: plugins/docker
settings:
pull_image: true
registry: docker.atomaka.com
repo: docker.atomaka.com/budget
tags:
- latest
- ${DRONE_TAG}
- name: deploy
image: appleboy/drone-ssh
settings:
host:
from_secret: unraid_host
username:
from_secret: unraid_username
key:
from_secret: unraid_ssh_key
script:
- docker pull docker.atomaka.com/budget:latest
- docker restart budget
trigger:
event: tag

27
Dockerfile Normal file
View file

@ -0,0 +1,27 @@
# Make sure it matches the Ruby version in .ruby-version and Gemfile
ARG RUBY_VERSION=3.2.0
FROM ruby:$RUBY_VERSION
# Set production environment
ENV RAILS_LOG_TO_STDOUT="1" \
RAILS_SERVE_STATIC_FILES="true" \
RAILS_ENV="production" \
BUNDLE_WITHOUT="development:test"
# Install application gems
COPY Gemfile Gemfile.lock ./
RUN bundle install
# Copy application code
COPY . .
# Precompile bootsnap code for faster boot times
RUN bundle exec bootsnap precompile --gemfile app/ lib/
# Precompiling assets for production without requiring secret RAILS_MASTER_KEY
RUN SECRET_KEY_BASE_DUMMY=1 bundle exec rails assets:precompile
# Entrypoint prepares database and starts app on 0.0.0.0:3000 by default,
# but can also take a rails command, like "console" or "runner" to start instead.
ENTRYPOINT ["/rails/bin/docker-entrypoint"]
EXPOSE 3000

12
bin/docker-entrypoint Executable file
View file

@ -0,0 +1,12 @@
#!/bin/sh
if [ $# -eq 0 ]; then
# Create new or migrate existing database
./bin/rails db:prepare
# Start the server by default
exec bin/rails server
else
# Allow other commands, like console or runner, to be called
exec bin/rails "$@"
fi