├── 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 |
--------------------------------------------------------------------------------