Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 15 additions & 45 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,45 +1,15 @@
# See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files.

# Ignore git directory.
/.git/

# Ignore bundler config.
/.bundle

# Ignore documentation
/docs/
/README.md
/CLAUDE.md
/AGENTS.md
/STYLE.md
/CONTRIBUTING.md

# Ignore all environment files (except templates).
/.env*
!/.env*.erb

# 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/.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
.git
.bundle
log/*
tmp/*
!tmp/keep
public/assets
storage/*
!storage/keep
node_modules
.DS_Store
Dockerfile
Dockerfile.dev
docker-compose.yml
.dockerignore
vendor/bundle
1 change: 0 additions & 1 deletion Dockerfile.dev
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ RUN apt-get update -qq && \
# Install application gems
COPY Gemfile Gemfile.lock .ruby-version ./
COPY lib/fizzy.rb ./lib/fizzy.rb
COPY gems ./gems/
RUN --mount=type=secret,id=GITHUB_TOKEN --mount=type=cache,id=fizzy-devbundle-${RUBY_VERSION},sharing=locked,target=/devbundle \
gem install bundler foreman && \
BUNDLE_PATH=/devbundle BUNDLE_GITHUB__COM="$(cat /run/secrets/GITHUB_TOKEN):x-oauth-basic" bundle install && \
Expand Down
8 changes: 8 additions & 0 deletions config/database.mysql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ development:
<<: *default
database: fizzy_development_cable
migrations_paths: db/cable_migrate
queue:
<<: *default
database: fizzy_development_queue
migrations_paths: db/queue_migrate
cache:
<<: *default
database: fizzy_development_cache
migrations_paths: db/cache_migrate

test:
primary:
Expand Down
4 changes: 4 additions & 0 deletions config/environments/development.rb
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,8 @@

# Canonical host for mailer URLs (emails always link here, not personal Tailscale URLs)
config.action_mailer.default_url_options = { host: "#{config.hosts.first}:3006" }

# Use Solid Queue for background jobs
config.active_job.queue_adapter = :solid_queue
config.solid_queue.connects_to = { database: { writing: :queue, reading: :queue } }
end
Empty file added db/cable_migrate/.keep
Empty file.
Empty file added db/cache_migrate/.keep
Empty file.
Empty file added db/queue_migrate/.keep
Empty file.
70 changes: 70 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
services:
db:
image: mysql:8.4
container_name: fizzy-mysql
restart: always
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5

app:
build:
context: .
dockerfile: Dockerfile.dev
secrets:
- GITHUB_TOKEN
container_name: fizzy-app
depends_on:
db:
condition: service_healthy
environment:
DATABASE_ADAPTER: mysql
MYSQL_HOST: db
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
RAILS_ENV: development
PORT: 3006
ports:
- "3006:3006"
volumes:
- .:/rails
- bundle_cache:/usr/local/bundle
stdin_open: true
tty: true
command:
["./bin/thrust", "./bin/rails", "server", "-p", "3006", "-b", "0.0.0.0"]

worker:
build:
context: .
dockerfile: Dockerfile.dev
secrets:
- GITHUB_TOKEN
container_name: fizzy-worker
depends_on:
db:
condition: service_healthy
environment:
DATABASE_ADAPTER: mysql
MYSQL_HOST: db
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
RAILS_ENV: development
volumes:
- .:/rails
- bundle_cache:/usr/local/bundle
command: ["./bin/jobs"]

volumes:
mysql_data:
bundle_cache:

secrets:
GITHUB_TOKEN:
environment: GITHUB_TOKEN