mysqlしかdockerで使ったことがなくて、時間がかかってしまったので、後で見れるように書きました。
pgadminも便利なので入れました。
docoker-compose up
したあとrails s
しなくてもいいようにdocker-compose.ymlにcommandで自動でやってくれるように書きました。
普段はコンテナ再作成しなくてもよいと思うのでdocker-compose start / stop
でやる想定です。
Dockerfile
FROM ruby:2.6
RUN apt-get update -y && \
apt-get install -y nodejs
COPY Gemfile /Gemfile
COPY Gemfile.lock /Gemfile.lock
RUN gem install bundler
RUN bundle install
docker-compose.yml
version: "3"
services:
db:
image: postgres
ports:
- 5432:5432
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
volumes:
- "./postgres-data:/var/lib/postgresql/data"
pgadmin4:
image: dpage/pgadmin4:4.2
ports:
- 80:80
volumes:
- ./docker/pgadmin4:/var/lib/pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: root
PGADMIN_DEFAULT_PASSWORD: root
depends_on:
- db
web:
build: .
volumes:
- ".:/app"
ports:
- "3000:3000"
tty: true
depends_on:
- db
working_dir: "/app"
command: "rails s -b 0.0.0.0"
mysqlとdatabase.ymlが違っていて、ここらへんを書くところをdevelopとかに書いてしまっていてハマりました。ちゃんとdefaultに書かなくてはいけませんでした。
config/database.yml
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
# ここらへん
username: root
password: root
host: db