├── Dockerfile ├── README.md └── docker-compose.yml /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM elixir:1.11.3 2 | 3 | RUN mix local.hex --force \ 4 | && mix archive.install --force hex phx_new 1.5.8 \ 5 | && apt-get update \ 6 | && curl -sL https://deb.nodesource.com/setup_12.x | bash \ 7 | && apt-get install -y apt-utils \ 8 | && apt-get install -y nodejs \ 9 | && apt-get install -y build-essential \ 10 | && apt-get install -y inotify-tools \ 11 | && mix local.rebar --force 12 | 13 | ENV APP_HOME /app 14 | RUN mkdir -p $APP_HOME 15 | WORKDIR $APP_HOME 16 | 17 | EXPOSE 4000 18 | 19 | CMD ["mix", "phx.server"] 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
Docker
2 |

Dockerizando um ambiente Elixir e Phoenix

3 |
by Keiko
4 | 5 | Iniciando Elixir e Phoenix no Docker de maneira simples e sem complicações!! 6 | 7 | Copie este repositório na pasta do seu projeto: 8 | 9 | ``` 10 | git clone https://github.com/keikomori/docker-elixir-phoenix 11 | ``` 12 | 13 | Acesse a pasta do projeto: 14 | 15 | ``` 16 | cd docker-elixir-phoenix 17 | ``` 18 | 19 | Execute a imagem do Dockerfile: 20 | 21 | ``` 22 | docker-compose build 23 | ``` 24 | 25 | Crie sua aplicação: 26 | 27 | ``` 28 | docker-compose run --rm phoenix mix phx.new . --app --no-html --no-webpack 29 | ``` 30 | 31 | Essa parte é bem importante, então não esqueça dela. Acesse o arquivo da pasta `/scr/config/devs.exs` 32 | - mude o nome que está no `hostname` de `localhost` para `db` 33 | 34 | ``` 35 | # Configure your database 36 | config :inmana, Inmana.Repo, 37 | adapter: Ecto.Adapters.Postgres, 38 | username: "postgres", 39 | password: "postgres", 40 | database: "inmana_dev", 41 | hostname: "db", 42 | show_sensitive_data_on_connection_error: true, 43 | pool_size: 10 44 | ``` 45 | 46 | > Vai ficar da forma que está acima. 47 | 48 | Agora vamos inicializar o banco de dados com o Ecto: 49 | 50 | ``` 51 | docker-compose run --rm phoenix mix ecto.create 52 | ``` 53 | 54 | Agora podemos testar se o Elixer e Phoenix estão funcionando devidamente executando: 55 | 56 | ``` 57 | docker-compose up 58 | ``` 59 | 60 | No navegador acesse a página: 61 | 62 | ``` 63 | http://localhost:4000/dashboard 64 | ``` 65 | 66 | Seu ambiente Docker está pronto para criar sua aplicação!!! 67 | 68 |

Dica quente: Se tu for instalar alguma dependência, não esqueça de executar os comandos abaixo:

69 | 70 | ``` 71 | docker-compose run --rm phoenix mix deps.get 72 | 73 | docker-compose run --rm phoenix mix deps.compile 74 | ``` 75 | 76 |

Comandos Docker Úteis!!

77 | 78 | - `docker ps` lista todos os container que estão em execução no momento 79 | - `docker container ls --all` lista todos os container que estão disponíveis 80 | - `docker logs ` mostra o registro do container 81 | - `docker start/stop ` inicia ou para um container 82 | - `docker rm ` remove o container 83 | - `docker images` lista todas as imagens disponíveis 84 | - `docker rmi ` remove uma imagem 85 | - `docker-compose down --volumes` destrói os volumes criados 86 | - `docker-compose up` cria e inicializa os containers 87 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | phoenix: 5 | build: . 6 | ports: 7 | - "4000:4000" 8 | volumes: 9 | - ./src:/app 10 | environment: 11 | - POSTGRES_USER=postgres 12 | - POSTGRES_PASSWORD=postgres 13 | - POSTGRES_HOST=db 14 | depends_on: 15 | - db 16 | db: 17 | image: postgres:10 18 | environment: 19 | - POSTGRES_USER=postgres 20 | - POSTGRES_PASSWORD=postgres 21 | --------------------------------------------------------------------------------