Add fizzy-app-102 as a replica
The setup here is a bit rough while we settle some of the details, but the gist of it is: - Define accessories to run the primary/replica processes - Add a web-replica role, which is similar to web but has the replication-side accessory - Load the beamer extension on the app's primary tenanted database Note that we aren't sending any traffic into the replica yet, but it would be functional to do so. This stage is mainly about testing the database replication.
This commit is contained in:
@@ -38,6 +38,10 @@ RUN bundle exec bootsnap precompile app/ lib/
|
||||
RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile
|
||||
|
||||
|
||||
# Fetch beamer library
|
||||
FROM basecamp/beamer:latest AS beamer
|
||||
|
||||
|
||||
# Final stage for app image
|
||||
FROM base
|
||||
|
||||
@@ -49,6 +53,7 @@ RUN apt-get update -qq && \
|
||||
# Copy built artifacts: gems, application
|
||||
COPY --from=build /usr/local/bundle /usr/local/bundle
|
||||
COPY --from=build /rails /rails
|
||||
COPY --from=beamer /home/beamer/bin/beamer.so /rails/bin/lib/beamer.so
|
||||
|
||||
# Run and own only the runtime files as a non-root user for security
|
||||
RUN useradd rails --create-home --shell /bin/bash && \
|
||||
|
||||
@@ -45,6 +45,8 @@ production:
|
||||
<<: *default
|
||||
database: storage/tenants/<%= Rails.env %>/%{tenant}/db/main.sqlite3
|
||||
tenanted: true
|
||||
extensions:
|
||||
- ./bin/lib/beamer.so
|
||||
primary_original:
|
||||
<<: *default
|
||||
database: storage/production.sqlite3
|
||||
|
||||
@@ -5,6 +5,9 @@ servers:
|
||||
jobs:
|
||||
hosts:
|
||||
- fizzy-app-101
|
||||
web-replica:
|
||||
hosts:
|
||||
- fizzy-app-102
|
||||
|
||||
proxy:
|
||||
hosts:
|
||||
|
||||
+33
-3
@@ -1,10 +1,42 @@
|
||||
service: fizzy
|
||||
image: basecamp/fizzy
|
||||
|
||||
|
||||
x-basecamp-registry: &basecamp-registry
|
||||
username: bcbot
|
||||
password:
|
||||
- BASECAMP_REGISTRY_PASSWORD
|
||||
|
||||
x-beamer-accessory: &beamer-accessory
|
||||
image: basecamp/beamer
|
||||
registry:
|
||||
<<: *basecamp-registry
|
||||
options:
|
||||
user: 1000 # Match the UID of the Rails app, for volume permissions
|
||||
volumes:
|
||||
- fizzy:/storage
|
||||
|
||||
|
||||
servers:
|
||||
jobs:
|
||||
cmd: bin/jobs
|
||||
|
||||
accessories:
|
||||
beamer-primary:
|
||||
<<: *beamer-accessory
|
||||
service: beamer-primary
|
||||
cmd: beamer primary --debug --remove-after=1h --dir=/storage
|
||||
port: 5000:80
|
||||
roles:
|
||||
- web
|
||||
|
||||
beamer-replica:
|
||||
<<: *beamer-accessory
|
||||
service: beamer-replica
|
||||
cmd: beamer replica --debug --primary=http://fizzy-app-101:5000/ --dir=/storage
|
||||
roles:
|
||||
- web-replica
|
||||
|
||||
volumes:
|
||||
- fizzy:/rails/storage
|
||||
|
||||
@@ -12,9 +44,7 @@ proxy:
|
||||
ssl: true
|
||||
|
||||
registry:
|
||||
username: bcbot
|
||||
password:
|
||||
- BASECAMP_REGISTRY_PASSWORD
|
||||
<<: *basecamp-registry
|
||||
|
||||
builder:
|
||||
arch: amd64
|
||||
|
||||
Reference in New Issue
Block a user