Skip to content

Instantly share code, notes, and snippets.

@thadeu
Last active December 27, 2017 20:39
Show Gist options
  • Save thadeu/77d5eab816bd0b192a8a021d6960ae61 to your computer and use it in GitHub Desktop.
Save thadeu/77d5eab816bd0b192a8a021d6960ae61 to your computer and use it in GitHub Desktop.
Docker for Ruby on Rails
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
username: postgres
host: postgres
port: 5432
development:
<<: *default
database: app_development
test:
<<: *default
database: app_test
staging:
<<: *default
database: staging_test
version: '3'
services:
webpacker:
build: .
command: bundle exec bin/webpack-dev-server
environment:
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
volumes:
- .:/app
ports:
- 8080:8080
app:
build: .
command: /bin/sh -c "rm -f /app/tmp/pids/server.pid && rails server -b 0.0.0.0"
working_dir: /app
environment:
- RAILS_ENV=development
- BUNDLE_JOBS=20
- BUNDLE_RETRY=5
- WEBPACKER_DEV_SERVER_HOST=webpacker
volumes:
- .:/app
ports:
- 3000:3000
links:
- postgres
depends_on:
- webpacker
postgres:
image: postgres:9.4
volumes:
- /var/lib/postgresql/data
ports:
- 5432:5432
FROM ruby:2.3.1
MAINTAINER Thadeu Esteves Jr <[email protected]>
# libs essentials
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
postgresql-client-9.4 \
libxml2-dev \
libxslt1-dev
# Node.js
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - \
&& apt-get install -y nodejs
# Yarn
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
RUN export TZ=America/Araguaina
RUN mkdir -p /app
WORKDIR /app
RUN bundle config github.https true
COPY . ./
RUN rm -rf Gemfile.lock
RUN gem install bundler && bundle install --jobs 20 --retry 5
EXPOSE 3000
EXPOSE 8080
# Passo-a-Passo
# Primeiro executar o build para baixar as imagens
```bash
docker-compose build
```
# Start a maquina default
```bash
docker-machine start default
```
# Start a ip da maquina default
```bash
docker-machine ip default
```
# Depois subir os services criados com docker-compose
```bash
docker-compose up
```
# configurar o arquivo database.yml
# Cria a base de dados e as primeiras migrates
```bash
docker-compose run app rake db:create db:migrate
```
# Todo comando que usa rake ou rails ou qualquer outro bin relacionado ao rails deve ser executado dentro de
```bash
docker-compose run app
```
Siga o tutorial da documentação
https://docs.docker.com/compose/install/#install-compose
@HDias
Copy link

HDias commented Nov 1, 2017

para mysql database.yml

default: &default
adapter: mysql2
encoding: utf8
username: root
host: mysql

development:
<<: *default
database: aedes_development

@HDias
Copy link

HDias commented Nov 1, 2017

docker-compose.yml MySQL

version: '3'

services:
app:
build: .
command: /bin/sh -c "rm -f /app/tmp/pids/server.pid && rails server -p 3000 -b 0.0.0.0"
volumes:
- .:/app
ports:
- "3000:3000"
links:
- mysql

mysql:
image: mysql:5.7
ports:
- 3306:3306
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'

@HDias
Copy link

HDias commented Nov 1, 2017

Dockerfile para MySQL

FROM ruby:2.3.1

MAINTAINER Thadeu Esteves Jr [email protected]

libs essentials

RUN apt-get update && apt-get install -y \
build-essential
mysql-client
libmysqlclient-dev
libxml2-dev
libxslt1-dev

Node.js

RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
&& apt-get install -y nodejs

RUN export TZ=America/Araguaina

RUN mkdir -p /app
WORKDIR /app

RUN bundle config github.https true

COPY Gemfile ./
RUN rm -rf Gemfile.lock
RUN gem install bundler && bundle install --jobs 20 --retry 5

COPY . ./
EXPOSE 3000

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment