LuanDantas
6/9/2018 - 9:09 PM

Rails + Docker

Rails + Docker

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