Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save newbrunomartins/95173f3f50223959fde771136a6a008e to your computer and use it in GitHub Desktop.
Save newbrunomartins/95173f3f50223959fde771136a6a008e to your computer and use it in GitHub Desktop.
Docker Compose em Debian Based (Rails + Docker-compose)
#Iniciando o projeto | ENTRE dentro da pasta que você gostaria de rodar o projeto. Eu por exemplo, inicio dentro do Dropboxmesmo usando Git... Vai que...
docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w /usr/src/app rails rails new --skip-bundle nome_do_projeto --database=postgresql
#CASO O COMANDO ACIMA NÃO RODE...
$ sudo groupadd docker
$ sudo gpasswd -a ${USER} docker && sudo systemctl restart docker
$ newgrp docker
#Crie um Dockerfile e cole o código abaixo. Exemplo no terminal: "atom Dockerfile" ou "code Dokerfile"
FROM ruby:2.3-slim
# Instalando as dependências
RUN apt-get update -y && apt-get install -qq -y --no-install-recommends \
build-essential nodejs libpq-dev
# Definindo um caminho absoluto
ENV INSTALL_PATH /usr/src/app
# Criando um diretório para receber a instalação
RUN mkdir -p $INSTALL_PATH
# Definindo a pasta principal
WORKDIR $INSTALL_PATH
# Copiando o gemfile para dentro do projeto
COPY Gemfile ./
# Instalando todas as Gems
RUN bundle install
# Copiando o código para dentro do container
COPY . .
# Iniciando o servidor
CMD puma -C config/puma.rb
#Ainda na raiz do projeto, crie um arquivo docker-compose.yml com o conteúdo abaixo:
version: '2'
services:
postgres:
image: 'postgres:9.5'
volumes:
- 'postgres:/var/lib/postgresql/data'
web:
depends_on:
- 'postgres'
build: .
ports:
- '3000:3000'
volumes:
- '.:/usr/src/app'
volumes:
postgres:
#Faça o BUILD do projeto
docker-compose build
#Navegue até /config/database.yml e substitua por
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: postgres
user: postgres
development:
<<: *default
database: nome_qualquer_para_o_banco_development
test:
<<: *default
database: nome_qualquer_para_o_banco_test
production:
<<: *default
database: nome_qualquer_para_o_banco_production
#Crie o banco de dados
docker-compose run web rails db:create
#crie seu Scaffold com
docker-compose run --rm web rails g scaffold post title description name #nem sempre/ou nunca será scaffold, mas por agora, ta valendo ;)
#Rode as migrations
docker-compose run --rm web rake db:migrate
#Suba o container! \0/\0/\0/\0/\0/\0/\0/\0/\0/\0/
docker-compose up
#Para encerrar tudo e apagar as imagens (ISSO NÃO APAGA O BANCO E AS CONFIGURAÇÕES ;) ), rode:
docker system prune -a
#OU Rode o comando abaixo apenas para matar os processos
docker-compose kill
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment