From 8b2e0595f2ae6209fadf86b1d77cf7f9100ef6f8 Mon Sep 17 00:00:00 2001 From: Sebskyo Date: Sun, 2 Mar 2025 18:27:59 +0100 Subject: [PATCH] production build --- Dockerfile | 5 +---- Gemfile | 2 ++ Gemfile.lock | 2 ++ config/credentials.yml.enc | 2 +- config/database.yml | 9 +++++++-- docker-compose.yml | 35 +++++++++++++++++++++++++++++++++++ 6 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile index 86978e5..c91eb4a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,7 @@ WORKDIR /rails # Install base packages RUN apt-get update -qq && \ - apt-get install --no-install-recommends -y curl libjemalloc2 libvips sqlite3 && \ + apt-get install --no-install-recommends -y curl libjemalloc2 libvips sqlite3 libpq-dev && \ rm -rf /var/lib/apt/lists /var/cache/apt/archives # Set production environment @@ -45,9 +45,6 @@ COPY . . # 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=1 ./bin/rails assets:precompile - diff --git a/Gemfile b/Gemfile index d955d37..5ea9b45 100644 --- a/Gemfile +++ b/Gemfile @@ -30,6 +30,8 @@ gem 'solid_cable' gem 'solid_cache' gem 'solid_queue' +gem 'pg' + # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 06851f1..1924c14 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -240,6 +240,7 @@ GEM parser (3.3.6.0) ast (~> 2.4.1) racc + pg (1.5.9) propshaft (1.1.0) actionpack (>= 7.0.0) activesupport (>= 7.0.0) @@ -461,6 +462,7 @@ DEPENDENCIES jbuilder kamal lookbook (~> 2.3) + pg propshaft puma (>= 5.0) rails (~> 8.0.0) diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc index fbfc0e5..a3be73b 100644 --- a/config/credentials.yml.enc +++ b/config/credentials.yml.enc @@ -1 +1 @@ -rQktudMLk/4nS4BJHGKoD4lBqDG6MEtDu6OGfa2co0Xh8IJKZptHAj/NQYLJ5/KKFjT4neeHnik9PggP8wA0xHsd2CpYz0tZtkBVNqKMsup2SawPXGFyXvxIuWjz4cnrR+ld1eRXW//9fReowT4h39sNnmoCdjJ/V9dIHW7SpsEm+GZwG4nxKbC69OI6cB1tnZw9yLbQ7YaiyEn0F0jAX8Z12KDnBrWBvoE7FT2Q46mdPBLOq/Y01SmgRnf4gG10qnL6vekNi+uCwpK7uFR7yOs9l4GB0HgU/f+E+6FZQzLOKv9xZQHosykScU87NAJ8l2cMCUpaxyO2nea7+7NXbbl0zu51TcBbRTdLZris9yGH0TXwfpX7PchcL5PHUG6PWh/F2UI4aEV1cM5IK+YOQmPHrB99dFYyKTWfnnWD3jRQRsyOQKTndTPHO7rm+kilUiy0SCzgrY+Pm2qR/eozCJ7tx6j/soqgTePSCUdo+A39oNrsXW3mzmOb--Gxpp+BnADvqu/55D--KNdQDd1XXqlyBaf7l0UnPQ== \ No newline at end of file +PRcWjIOSDHFafgdZ5HQOiUQNOZpdKVqG62n3hbtmJ07hJzUdQ6vVOjRtw7j49J+4bHykHIMwqbwtYtreroD10bItlKmQ11Nd+h3cauM+DJxsa8DdWeV8zDx94jImPRPtofu3C9Oj6ogHCJrcxWg3L9rWNaOyYCsLN1uECMOQhpIxNVjF0bcGERZhTAWbLIr2jewkJK0TWu8DyZCSn9esA4MZFEP8rVae5ApZlFHcDKkXVHG/JuF+MuP7OO6rFPdgigRO0nzIXH6yXNwNATH9Yi8x0dREjK0mk6h/aYHWnNp0RT8Qnbcpt30lauFLv3W48qkQ621UU7fuFS6LZukr30NLrNUEXVZMid3iGGvLUZk2P3bS1dl0rg9X11f/3FJ58dXAZnJkMogqR3NlfjqArZD74UC0AURGFUuAwNJCfw6vCAbAMHW9iNGE0IiRT0PcrQsNApqlTZQie0SM+89TWr4CV2EEqXdgc8v7SG6X4mks58AEDWaYRSeH--h6b3cNVTSphSsWVJ--5cXbFf2DabGLMkRA0K2GcQ== \ No newline at end of file diff --git a/config/database.yml b/config/database.yml index 2640cb5..1284944 100644 --- a/config/database.yml +++ b/config/database.yml @@ -25,8 +25,13 @@ test: # is mounted as a persistent Docker volume in config/deploy.yml. production: primary: - <<: *default - database: storage/production.sqlite3 + adapter: postgresql + encoding: unicode + host: <%= ENV['DATABASE_HOST'] %> + database: <%= ENV['DATABASE_NAME'] %> + username: <%= ENV['DATABASE_USER'] %> + password: <%= ENV['DATABASE_PASS'] %> + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> cache: <<: *default database: storage/production_cache.sqlite3 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9007d8a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,35 @@ +version: '2' + +services: + rails: + build: + context: ./ + environment: + DATABASE_HOST: postgres + DATABASE_NAME: chatbot_prod + DATABASE_USER: postgres + DATABASE_PASS: postgres + RAILS_MASTER_KEY: 8a8e7fc319733cd969f23450cbdfadaf + SOLID_QUEUE_IN_PUMA: true + depends_on: + - postgres + ports: + - "3000:3000" + networks: + - chatbot-network + postgres: + image: postgres:16.8-alpine3.20 + environment: + POSTGRES_DB: chatbot_prod + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + volumes: + - postgres-data:/var/lib/postgresql/data + networks: + - chatbot-network + +volumes: + postgres-data: + +networks: + chatbot-network: