Last active
October 6, 2023 19:20
-
-
Save fedorkk/036dedc915364d4a6b351b2661ababf3 to your computer and use it in GitHub Desktop.
docker-compose template for local development
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Makefile | |
SHELL := /bin/zsh # could be changed to your shell | |
# all tasks should be added here, otherwise Make tries to create the folder with the same name and skip the task if folder exists | |
.PHONY: env db console stop prepare test yarn front | |
dev: env db server | |
prepare: env db yarn | |
bundle install | |
bundle exec rake db:prepare | |
bundle exec rake webpacker:install | |
bundle exec rake assets:clobber | |
- bundle exec rake webpacker:compile | |
yarn: | |
yarn add [email protected] | |
yarn add @popperjs/[email protected] | |
yarn add chart.js | |
env: | |
source ./.env.development | |
db: | |
docker-compose -f docker-compose-local.yml up -d | |
console: | |
bundle exec rails c | |
server: | |
bundle exec rails s | |
test: | |
bundle exec rspec | |
stop: | |
docker-compose -f docker-compose-local.yml down | |
front: | |
bundle exec ./bin/webpack-dev-server | |
------------------------------------------------------------ | |
# .env.development | |
POSTGRES_USER=db_user | |
POSTGRES_PASSWORD=123qweasd | |
DATABASE_HOST=127.0.0.1 | |
------------------------------------------------------------ | |
# docker-compose-local.yml | |
--- | |
version: "3.9" | |
services: | |
redis: | |
image: 'redis:alpine' | |
ports: | |
- '6379:6379' | |
db: | |
image: 'postgres' | |
env_file: | |
- .env.development | |
volumes: | |
- db-data:/var/lib/postgresql/data/ | |
ports: | |
- '5432:5432' | |
# sidekiq: | |
# depends_on: | |
# - 'db' | |
# - 'redis' | |
# build: . | |
# command: bundle exec sidekiq | |
# volumes: | |
# - '.:/project' | |
# - '/project/tmp' # don't mount tmp directory | |
# environment: | |
# - REDIS_URL_SIDEKIQ=redis://redis:6379/1 | |
volumes: | |
db-data: | |
------------------------------------------------------------ | |
# database.yml.example | |
default: &default | |
adapter: postgresql | |
encoding: unicode | |
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> | |
port: 5432 | |
local_default: &local_default | |
<<: *default | |
user: <%= ENV.fetch("POSTGRES_USER", 'postgres') %> | |
password: <%= ENV.fetch("POSTGRES_PASSWORD", '') %> | |
host: <%= ENV.fetch("DATABASE_HOST", 'localhost') %> | |
development: | |
<<: *local_default | |
database: | |
test: | |
<<: *local_default | |
database: | |
production: | |
<<: *default | |
database: | |
username: | |
password: | |
------------------------------------------------------------ | |
Makefile позволяет выполнять все в одну короткую команду. (Фактически набор алиасов для проекта). Например make dev выполняет директиву dev в которую вложены env и db. Первая загружает .env.development в переменные окружения, вторая запускает docker-compose с указанным файлом настроек. В докер композе прописаны конфиги для базы и редиса (сайдкик мне не нужен обычно в докере, так что он закоменчен). Переменные окружения для базы берутся из того же .env файла. После этого можно сразу создавать rails проект и работать. | |
# make dev | |
# make test | |
и.т.п. | |
docker-compose файл указан отдельно, что позволяет иметь один для dev машины и стандартный docker_compose.yml для прода (если нужен). | |
Все что применимо к фронту я обычно удаляю за ненадобностью (фронт я стараюсь не трогать вообще). | |
Раньше у меня rails new тоже был, но я его выкинул потому что всегда нужны разные версии руби и рельс и разные флаги запуска, так что унифицировать толком не получается. То же самое с Dockerfile и web контейнером в compose. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment