Construção da API do treinamento para rodar com o Docker Compose
# docker-machine rm default
# docker-machine create --driver virtualbox default
# docker-machine env default
# eval $(docker-machine env default)
Pegar o IP que é usado pela VM do Docker para rodar as aplicações
# docker build -t <your username>/redis .
# docker run -d --name redis -p 6379:6379 <your username>/redis
# docker run -d --name redis -p 6379:6379 jonathanbaraldi/redis
Com isso temos o container do Redis rodando na porta 6379.
Ir no diretório /node onde tem o Dockerfile da aplicação, e rodar o build. Fazendo a imagem # docker build -t /node .
Rodando a imagem do node, fazendo a ligação com o container do Redis
# docker run -d --name node -p 8080:8080 --link <redis name> <your username>/node
# docker run -d --name node -p 8080:8080 --link redis jonathanbaraldi/node
Com isso já temos a aplicação rodando, conectada no Redis
Ir no diretório /nginx onde tem o Dockerfile da aplicação, e rodar o build. Fazendo a imagem:
# docker build -t <your username>/nginx .
Criando o container do nginx a partir da imagem e fazendo a ligação com o container do Node
# docker run -d --name nginx -p 80:80 --link <app running> <your username>/nginx
# docker run -d --name nginx -p 80:80 --link node jonathanbaraldi/nginx
Feito isso, colocando os containers para rodar, e interligando eles, podemos ver como funciona nossa aplicação que tem um contador de acessos. Para rodar nosso docker-compose, precisamos remover todos os containers que estão rodando e ir na raiz do diretório para rodar.
# docker-compose up
# curl <ip>:80
----------------------------------
This page has been viewed 29 times
----------------------------------
E após isso acessar no IP:80, pegando usando
# docker-machine env default
Criar o volume e dar o nome e a ele. # docker volume create --name
Depois de criando, adicionar ele na criação do docker-compose. Com isso ele não irá conter dados. O que é preciso e levantar um container, atachar esse volume e então rodar o comando de copia dos dados do host para dentro do container.
# /Library/WebServer/Documents/jon/api-treinamento-docker-compose
Copiar a pasta volumeteste para a pasta tmp dentro do container. E isso se replicará, pois o volume está montado em todos containers.
# docker cp volumeteste e8d0ef878dd8:/tmp/
# docker cp arquivo.txt <id do container>:/arquivo.txt
# docker cp <id do container>:/arquivo.txt arquivo.txt
Com isso, o volume começa a ser populado com os arquivo necessários locais, ou pode-se rodar um script para popular o volume com dados vindos da internet. Para entrar dentro do container e ver os arquivos que foram copiados executar o shell de dentro do container:
# docker exec -it <id container> /bin/bash
# cd /tmp/volumeteste
# ls