Crie seu projeto Rails usando:
docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w /usr/src/app rails rails new
--skip-bundle my_awesome_app
Agora entre no diretório via console e crie um file chamado "Dockerfile" e substitua o conteúdo dele por:
FROM ruby:2.3
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/*
COPY Gemfile /usr/src/app
RUN bundle install
COPY . /usr/src/app
EXPOSE 3000
CMD puma -C config/puma.rb
Agora que criamos nosso Dockerfile podemos fazer o Build da nossa imagem (Construir nossa imagem personalizada), dentro da pasta do projeto.
docker build -t my_awesome_app .
Para criar o banco de dados:
docker run -v "$PWD":/usr/src/app my_awesome_app rails db:create
Para gerar um scaffold simples:
docker run -v "$PWD":/usr/src/app my_awesome_app rails g scaffold notice title:text body:text
Para rodar as migrations:
docker run -v "$PWD":/usr/src/app my_awesome_app rails db:migrate
Depois disso podemos pegar a imagem que geramos e criar nosso container para subir nossa aplicação, no console rode:
docker run -v "$PWD":/usr/src/app -t -p 3000:3000 my_awesome_app
Pronto \o/, agora acesse no seu Browser http://localhost:3000/notices