Usaremos o supervisor para gerenciar os contêineres docker em nossa máquina host.
Instalação
Instale o Docker e o Supervisor via apt. Há um espelho que contém a versão mais recente do docker.
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo sh -c "echo deb https://get.docker.io/ubuntu docker main
> /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install lxc-docker
Aqui está um guia completo sobre como instalar o docker: https://docs.docker.com/installation/ubuntulinux/
Configurando o Docker
Atualize /etc/default/docker
e adicione a seguinte linha:
DOCKER_OPTS="-r=false $DOCKER_OPTS"
Isso impede que o docker reinicie automaticamente os contêineres que falharam ao iniciar. Vamos deixar o supervisor cuidar disso para nós.
Configuração do Supervisor
Escreva uma configuração de supervisor para seu aplicativo e salve-a em ./etc/supervisor/conf.d/
Aqui está um exemplo de configuração de supervisor para seu aplicativo
[program:myapp]
autorestart=true
autostart=true
command=docker run --name myapp -a stdout -a stderr --rm=true -p 3000:3000 -v /home/ubuntu/deploy:/app -e PORT=3000 me/myapp python server.py
Argumentos de comando usados
--name
define o nome do nosso contêiner.-a stdout -a stderr
obtém o fluxo do processo interno para que possamos usar o supervisor para registrar.- Parar um contêiner não o exclui. remove o contêiner assim que ele é interrompido.
--rm
-p 3000:3000
encaminha a porta 3000 do nosso host para a porta 3000 do nosso contêiner.- Você pode definir variáveis de ambiente dentro do contêiner. ie.
-e PORT=3000