mirror of
https://github.com/iritmaximus/brewery.git
synced 2026-10-12 19:13:49 +03:00
4.13 added flyio cd to project
This commit is contained in:
@@ -0,0 +1,37 @@
|
|||||||
|
# See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files.
|
||||||
|
|
||||||
|
# Ignore git directory.
|
||||||
|
/.git/
|
||||||
|
|
||||||
|
# Ignore bundler config.
|
||||||
|
/.bundle
|
||||||
|
|
||||||
|
# Ignore all default key files.
|
||||||
|
/config/master.key
|
||||||
|
/config/credentials/*.key
|
||||||
|
|
||||||
|
# Ignore all environment files.
|
||||||
|
/.env*
|
||||||
|
!/.env.example
|
||||||
|
|
||||||
|
# Ignore all logfiles and tempfiles.
|
||||||
|
/log/*
|
||||||
|
/tmp/*
|
||||||
|
!/log/.keep
|
||||||
|
!/tmp/.keep
|
||||||
|
|
||||||
|
# Ignore pidfiles, but keep the directory.
|
||||||
|
/tmp/pids/*
|
||||||
|
!/tmp/pids/.keep
|
||||||
|
|
||||||
|
# Ignore storage (uploaded files in development and any SQLite databases).
|
||||||
|
/storage/*
|
||||||
|
!/storage/.keep
|
||||||
|
/tmp/storage/*
|
||||||
|
!/tmp/storage/.keep
|
||||||
|
|
||||||
|
# Ignore assets.
|
||||||
|
/node_modules/
|
||||||
|
/app/assets/builds/*
|
||||||
|
!/app/assets/builds/.keep
|
||||||
|
/public/assets
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# This workflow will install a prebuilt Ruby version, install dependencies, and
|
# This workflow will install a prebuilt Ruby version, install dependencies, and
|
||||||
# run tests and linters.
|
# run tests and linters.
|
||||||
name: "Ruby on Rails CI"
|
name: "Ruby on Rails CI/CD"
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "main" ] # Jos repositoriosi päähaara ei ole main, muuta nämä
|
branches: [ "main" ] # Jos repositoriosi päähaara ei ole main, muuta nämä
|
||||||
@@ -25,10 +25,11 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
RAILS_ENV: test
|
RAILS_ENV: test
|
||||||
DATABASE_URL: "postgres://rails:password@localhost:5432/rails_test"
|
DATABASE_URL: "postgres://rails:password@localhost:5432/rails_test"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
# Add or replace dependency steps here
|
|
||||||
- name: Install Ruby and gems
|
- name: Install Ruby and gems
|
||||||
uses: ruby/setup-ruby@v1
|
uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
@@ -38,3 +39,7 @@ jobs:
|
|||||||
- name: Run RuboCop
|
- name: Run RuboCop
|
||||||
run: bundle exec rubocop --parallel
|
run: bundle exec rubocop --parallel
|
||||||
|
|
||||||
|
- uses: superfly/flyctl-actions/setup-flyctl@master
|
||||||
|
- run: flyctl deploy --remote-only
|
||||||
|
env:
|
||||||
|
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
|
||||||
|
|||||||
+66
-10
@@ -1,15 +1,71 @@
|
|||||||
FROM ruby:3.1.2
|
# syntax = docker/dockerfile:1
|
||||||
|
|
||||||
ENV PORT 3000
|
# Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
|
||||||
EXPOSE $PORT
|
ARG RUBY_VERSION=3.1.2
|
||||||
|
FROM ruby:$RUBY_VERSION-slim as base
|
||||||
|
|
||||||
WORKDIR /home/app
|
LABEL fly_launch_runtime="rails"
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y npm && npm install -g yarn
|
# Rails app lives here
|
||||||
|
WORKDIR /rails
|
||||||
|
|
||||||
COPY Gemfile Gemfile.lock ./
|
# Set production environment
|
||||||
RUN bundle install
|
ENV RAILS_ENV="production" \
|
||||||
COPY . .
|
BUNDLE_WITHOUT="development:test" \
|
||||||
|
BUNDLE_DEPLOYMENT="1"
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash"]
|
# Update gems and bundler
|
||||||
CMD ["startup.sh"]
|
RUN gem update --system --no-document && \
|
||||||
|
gem install -N bundler
|
||||||
|
|
||||||
|
|
||||||
|
# Throw-away build stage to reduce size of final image
|
||||||
|
FROM base as build
|
||||||
|
|
||||||
|
# Install packages needed to build gems
|
||||||
|
RUN apt-get update -qq && \
|
||||||
|
apt-get install --no-install-recommends -y build-essential libpq-dev pkg-config
|
||||||
|
|
||||||
|
# Install application gems
|
||||||
|
COPY --link Gemfile Gemfile.lock ./
|
||||||
|
RUN bundle install && \
|
||||||
|
bundle exec bootsnap precompile --gemfile && \
|
||||||
|
rm -rf ~/.bundle/ $BUNDLE_PATH/ruby/*/cache $BUNDLE_PATH/ruby/*/bundler/gems/*/.git
|
||||||
|
|
||||||
|
# Copy application code
|
||||||
|
COPY --link . .
|
||||||
|
|
||||||
|
# Precompile bootsnap code for faster boot times
|
||||||
|
RUN bundle exec bootsnap precompile app/ lib/
|
||||||
|
|
||||||
|
# Precompiling assets for production without requiring secret RAILS_MASTER_KEY
|
||||||
|
RUN SECRET_KEY_BASE=DUMMY ./bin/rails assets:precompile
|
||||||
|
|
||||||
|
|
||||||
|
# Final stage for app image
|
||||||
|
FROM base
|
||||||
|
|
||||||
|
# Install packages needed for deployment
|
||||||
|
RUN apt-get update -qq && \
|
||||||
|
apt-get install --no-install-recommends -y curl libsqlite3-0 postgresql-client && \
|
||||||
|
rm -rf /var/lib/apt/lists /var/cache/apt/archives
|
||||||
|
|
||||||
|
# Copy built artifacts: gems, application
|
||||||
|
COPY --from=build /usr/local/bundle /usr/local/bundle
|
||||||
|
COPY --from=build /rails /rails
|
||||||
|
|
||||||
|
# Run and own only the runtime files as a non-root user for security
|
||||||
|
RUN useradd rails --create-home --shell /bin/bash && \
|
||||||
|
chown -R rails:rails db log storage tmp
|
||||||
|
USER rails:rails
|
||||||
|
|
||||||
|
# Deployment options
|
||||||
|
ENV RAILS_LOG_TO_STDOUT="1" \
|
||||||
|
RAILS_SERVE_STATIC_FILES="true"
|
||||||
|
|
||||||
|
# Entrypoint prepares the database.
|
||||||
|
ENTRYPOINT ["/rails/bin/docker-entrypoint"]
|
||||||
|
|
||||||
|
# Start the server by default, this can be overwritten at runtime
|
||||||
|
EXPOSE 3000
|
||||||
|
CMD ["./bin/rails", "server"]
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
FROM ruby:3.1.2
|
||||||
|
|
||||||
|
ENV PORT 3000
|
||||||
|
EXPOSE $PORT
|
||||||
|
|
||||||
|
WORKDIR /home/app
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y npm && npm install -g yarn
|
||||||
|
|
||||||
|
COPY Gemfile Gemfile.lock ./
|
||||||
|
RUN bundle install
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/bash"]
|
||||||
|
CMD ["startup.sh"]
|
||||||
@@ -86,3 +86,9 @@ end
|
|||||||
group :production do
|
group :production do
|
||||||
gem "pg"
|
gem "pg"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
gem "dockerfile-rails", ">= 1.5", :group => :development
|
||||||
|
|
||||||
|
gem "sentry-ruby", "~> 5.13"
|
||||||
|
|
||||||
|
gem "sentry-rails", "~> 5.13"
|
||||||
|
|||||||
@@ -93,6 +93,8 @@ GEM
|
|||||||
reline (>= 0.3.1)
|
reline (>= 0.3.1)
|
||||||
diff-lcs (1.5.0)
|
diff-lcs (1.5.0)
|
||||||
docile (1.4.0)
|
docile (1.4.0)
|
||||||
|
dockerfile-rails (1.5.12)
|
||||||
|
rails (>= 3.0.0)
|
||||||
erubi (1.12.0)
|
erubi (1.12.0)
|
||||||
factory_bot (6.2.1)
|
factory_bot (6.2.1)
|
||||||
activesupport (>= 5.0.0)
|
activesupport (>= 5.0.0)
|
||||||
@@ -236,6 +238,11 @@ GEM
|
|||||||
rexml (~> 3.2, >= 3.2.5)
|
rexml (~> 3.2, >= 3.2.5)
|
||||||
rubyzip (>= 1.2.2, < 3.0)
|
rubyzip (>= 1.2.2, < 3.0)
|
||||||
websocket (~> 1.0)
|
websocket (~> 1.0)
|
||||||
|
sentry-rails (5.13.0)
|
||||||
|
railties (>= 5.0)
|
||||||
|
sentry-ruby (~> 5.13.0)
|
||||||
|
sentry-ruby (5.13.0)
|
||||||
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
simplecov (0.22.0)
|
simplecov (0.22.0)
|
||||||
docile (~> 1.1)
|
docile (~> 1.1)
|
||||||
simplecov-html (~> 0.11)
|
simplecov-html (~> 0.11)
|
||||||
@@ -287,6 +294,7 @@ DEPENDENCIES
|
|||||||
bootsnap
|
bootsnap
|
||||||
capybara
|
capybara
|
||||||
debug
|
debug
|
||||||
|
dockerfile-rails (>= 1.5)
|
||||||
factory_bot_rails
|
factory_bot_rails
|
||||||
importmap-rails
|
importmap-rails
|
||||||
jbuilder
|
jbuilder
|
||||||
@@ -298,6 +306,8 @@ DEPENDENCIES
|
|||||||
rspec-rails
|
rspec-rails
|
||||||
rubocop
|
rubocop
|
||||||
selenium-webdriver
|
selenium-webdriver
|
||||||
|
sentry-rails (~> 5.13)
|
||||||
|
sentry-ruby (~> 5.13)
|
||||||
simplecov
|
simplecov
|
||||||
sprockets-rails
|
sprockets-rails
|
||||||
sqlite3
|
sqlite3
|
||||||
|
|||||||
Executable
+8
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# If running the rails server then create or migrate existing database
|
||||||
|
if [ "${*}" == "./bin/rails server" ]; then
|
||||||
|
./bin/rails db:prepare
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "${@}"
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# generated by dockerfile-rails
|
||||||
|
|
||||||
|
---
|
||||||
|
options:
|
||||||
|
label:
|
||||||
|
fly_launch_runtime: rails
|
||||||
|
sentry: true
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
if ENV["SENTRY_DSN"]
|
||||||
|
|
||||||
|
Sentry.init do |config|
|
||||||
|
config.dsn = ENV["SENTRY_DSN"]
|
||||||
|
config.breadcrumbs_logger = [:active_support_logger, :http_logger]
|
||||||
|
|
||||||
|
# Set traces_sample_rate to 1.0 to capture 100%
|
||||||
|
# of transactions for performance monitoring.
|
||||||
|
# We recommend adjusting this value in production.
|
||||||
|
config.traces_sample_rate = 1.0
|
||||||
|
# or
|
||||||
|
config.traces_sampler = lambda do |context|
|
||||||
|
true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# fly.toml app configuration file generated for brewery on 2023-11-11T18:24:26+02:00
|
||||||
|
#
|
||||||
|
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
|
||||||
|
#
|
||||||
|
|
||||||
|
app = "brewery"
|
||||||
|
primary_region = "arn"
|
||||||
|
console_command = "/rails/bin/rails console"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
|
||||||
|
[http_service]
|
||||||
|
internal_port = 3000
|
||||||
|
force_https = true
|
||||||
|
auto_stop_machines = true
|
||||||
|
auto_start_machines = true
|
||||||
|
min_machines_running = 0
|
||||||
|
processes = ["app"]
|
||||||
|
|
||||||
|
[[statics]]
|
||||||
|
guest_path = "/rails/public"
|
||||||
|
url_prefix = "/"
|
||||||
Reference in New Issue
Block a user