docker-linux
sidebar_position: 4
Docker no Linux/macOS
Neste guia, você irá implantar o MyEMS com o Docker no Linux (ou macOS).
Pré-requisitos
- Docker e npm instalados no host.
- Servidor MySQL instalado.
- O banco de dados MySQL pode ser acessado a partir do host onde o Docker Engine está em execução.
- Requisitos de hardware: Pelo menos 4GB de RAM, 20GB de espaço de armazenamento (para banco de dados e contêineres Docker).
Clonar o código-fonte:
cd ~
git clone https://github.com/myems/myems
Passo 1: Banco de Dados
Consulte Banco de Dados
Passo 2: myems-api
Nesta seção, você irá instalar o myems-api no Docker.
- Copiar o código-fonte para o diretório raiz
cp -r myems/myems-api /
cd /myems-api
- Criar o arquivo .env com base no arquivo example.env
Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.
cp example.env .env
- Construir a Imagem a partir do Código-Fonte
docker build -t myems/myems-api .
Para construir para múltiplas plataformas (não apenas para a arquitetura e sistema operacional onde o build está sendo invocado), você pode usar o buildx e definir a flag --platform para especificar a plataforma alvo da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-api .
- Executar um Contêiner Docker
No host, criar uma pasta compartilhada para arquivos de upload:
mkdir /myems-upload
Criar um contêiner, montar a pasta compartilhada no contêiner e também montar o arquivo .env no contêiner:
docker run -d -p 8000:8000 -v /myems-upload:/var/www/myems-admin/upload -v /myems-api/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-api myems/myems-api
-
-d: Executa o contêiner em segundo plano e imprime o ID do contêiner.
-
-p: Publica a(s) porta(s) do contêiner no host. A configuração 8000:8000 (Host:Contêiner) vincula a porta 8000 (direita) do contêiner à porta TCP 8000 (esquerda) da máquina host.
-
-v: Se você usar -v ou --volume para montar um arquivo ou diretório que ainda não existe no host Docker, o -v cria o endpoint para você (sempre como um diretório). A opção ro, se presente, faz com que o bind mount seja montado no contêiner como somente leitura. Para versões v4.7.0 ou anteriores, use '/code/.env' em vez de '/app/.env'.
-
--log-opt max-size=1m: Tamanho máximo do log antes de ser rotacionado. Um inteiro positivo acompanhado de um modificador que representa a unidade de medida (k, m ou g).
-
--log-opt max-file=2: Número máximo de arquivos de log que podem existir. Se a rotação de logs criar arquivos extras, o arquivo mais antigo é removido. Um inteiro positivo.
-
--restart: Política de reinicialização a ser aplicada quando um contêiner é encerrado.
-
--name: Atribui um nome ao contêiner.
O caminho absoluto antes do dois pontos refere-se ao caminho no host e pode variar em seu sistema. O caminho absoluto após o dois pontos refere-se ao caminho no contêiner e NÃO PODE SER ALTERADO. Ao passar o .env como parâmetro de bind mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o contêiner para que a alteração entre em vigor.
Se você quiser migrar a imagem para outro computador:
- Exportar a imagem para um arquivo tar
docker save --output myems-api.tar myems/myems-api
- Copiar o arquivo tar para outro computador e, em seguida, carregar a imagem a partir do arquivo tar
docker load --input .\myems-api.tar
Passo 3: myems-admin
Nesta seção, você irá instalar o myems-admin no Docker.
- Copiar o código-fonte para o diretório raiz
cp -r myems/myems-admin /
cd /myems-admin
Substitua manualmente 127.0.0.1:8000 no nginx.conf pelo endereço IP real e porta do myems-api no HOST.
nano nginx.conf
proxy_pass http://127.0.0.1:8000/;
- Construir a Imagem a partir do Código-Fonte
docker build -t myems/myems-admin .
Para construir para múltiplas plataformas (não apenas para a arquitetura e sistema operacional onde o build está sendo invocado), você pode usar o buildx e definir a flag --platform para especificar a plataforma alvo da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-admin .
- Executar um Contêiner Docker
No host, criar uma pasta compartilhada para arquivos de upload:
mkdir /myems-upload
Criar um contêiner, montar a pasta compartilhada de upload no contêiner e também montar o nginx.conf:
docker run -d -p 8001:8001 -v /myems-upload:/var/www/myems-admin/upload -v /myems-admin/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-admin myems/myems-admin
-
-d: Executa o contêiner em segundo plano e imprime o ID do contêiner.
-
-p: Publica a(s) porta(s) do contêiner no host. A configuração 8001:8001 (Host:Contêiner) vincula a porta 8001 (direita) do contêiner à porta TCP 8001 (esquerda) da máquina host.
-
-v: Se você usar -v ou --volume para montar um arquivo ou diretório que ainda não existe no host Docker, o -v cria o endpoint para você (sempre como um diretório). A opção ro, se presente, faz com que o bind mount seja montado no contêiner como somente leitura. Para versões v4.7.0 ou anteriores, use '/code/.env' em vez de '/app/.env'.
-
--log-opt max-size=1m: Tamanho máximo do log antes de ser rotacionado. Um inteiro positivo acompanhado de um modificador que representa a unidade de medida (k, m ou g).
-
--log-opt max-file=2: Número máximo de arquivos de log que podem existir. Se a rotação de logs criar arquivos extras, o arquivo mais antigo é removido. Um inteiro positivo.
-
--restart: Política de reinicialização a ser aplicada quando um contêiner é encerrado.
-
--name: Atribui um nome ao contêiner.
Se você quiser migrar a imagem para outro computador:
- Exportar a imagem para um arquivo tar
docker save --output myems-admin.tar myems/myems-admin
- Copiar o arquivo tar para outro computador e, em seguida, carregar a imagem a partir do arquivo tar
docker load --input .\myems-admin.tar
Passo 4: myems-modbus-tcp
Nesta seção, você irá instalar o myems-modbus-tcp no Docker.
- Copiar o código-fonte para o diretório raiz
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
- Criar o arquivo .env com base no arquivo example.env
Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.
cp example.env .env
- Construir a Imagem a partir do Código-Fonte
docker build -t myems/myems-modbus-tcp .
Para construir para múltiplas plataformas (não apenas para a arquitetura e sistema operacional onde o build está sendo invocado), você pode usar o buildx e definir a flag --platform para especificar a plataforma alvo da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
- Executar um Contêiner Docker (executar como superusuário)
docker run -d -v /myems-modbus-tcp/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-modbus-tcp myems/myems-modbus-tcp
-
-d: Executa o contêiner em segundo plano e imprime o ID do contêiner.
-
-v: Se você usar -v ou --volume para montar um arquivo ou diretório que ainda não existe no host Docker, o -v cria o endpoint para você (sempre como um diretório). A opção ro, se presente, faz com que o bind mount seja montado no contêiner como somente leitura. Para versões v4.7.0 ou anteriores, use '/code/.env' em vez de '/app/.env'.
-
--log-opt max-size=1m: Tamanho máximo do log antes de ser rotacionado. Um inteiro positivo acompanhado de um modificador que representa a unidade de medida (k, m ou g).
-
--log-opt max-file=2: Número máximo de arquivos de log que podem existir. Se a rotação de logs criar arquivos extras, o arquivo mais antigo é removido. Um inteiro positivo.
-
--restart: Política de reinicialização a ser aplicada quando um contêiner é encerrado.
-
--name: Atribui um nome ao contêiner.
O caminho absoluto antes do dois pontos refere-se ao caminho no host e pode variar em seu sistema. O caminho absoluto após o dois pontos refere-se ao caminho no contêiner e NÃO PODE SER ALTERADO. Ao passar o .env como parâmetro de bind mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o contêiner para que a alteração entre em vigor.
- Migrar o Contêiner Docker
Para migrar o contêiner para outro computador:
- Exportar a imagem para um arquivo tar
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- Copiar o arquivo tar para outro computador e, em seguida, carregar a imagem a partir do arquivo tar
docker load --input .\myems-modbus-tcp.tar
Passo 5: myems-cleaning
Nesta seção, você irá instalar o myems-cleaning no Docker.
- Copiar o código-fonte para o diretório raiz
cp -r myems/myems-cleaning /
cd /myems-cleaning
- Criar o arquivo .env com base no arquivo example.env
Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.
cp example.env .env
- Construir a Imagem a partir do Código-Fonte
docker build -t myems/myems-cleaning .
Para construir para múltiplas plataformas (não apenas para a arquitetura e sistema operacional onde o build está sendo invocado), você pode usar o buildx e definir a flag --platform para especificar a plataforma alvo da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
- Executar um Contêiner Docker (executar como superusuário)
docker run -d -v /myems-cleaning/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-cleaning myems/myems-cleaning
-
-d: Executa o contêiner em segundo plano e imprime o ID do contêiner.
-
-v: Se você usar -v ou --volume para montar um arquivo ou diretório que ainda não existe no host Docker, o -v cria o endpoint para você (sempre como um diretório). A opção ro, se presente, faz com que o bind mount seja montado no contêiner como somente leitura. Para versões v4.7.0 ou anteriores, use '/code/.env' em vez de '/app/.env'.
-
--log-opt max-size=1m: Tamanho máximo do log antes de ser rotacionado. Um inteiro positivo acompanhado de um modificador que representa a unidade de medida (k, m ou g).
-
--log-opt max-file=2: Número máximo de arquivos de log que podem existir. Se a rotação de logs criar arquivos extras, o arquivo mais antigo é removido. Um inteiro positivo.
-
--restart: Política de reinicialização a ser aplicada quando um contêiner é encerrado.
-
--name: Atribui um nome ao contêiner.
O caminho absoluto antes do dois pontos refere-se ao caminho no host e pode variar em seu sistema. O caminho absoluto após o dois pontos refere-se ao caminho no contêiner e NÃO PODE SER ALTERADO. Ao passar o .env como parâmetro de bind mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o contêiner para que a alteração entre em vigor.
- Migrar o Contêiner Docker
Para migrar o contêiner para outro computador:
- Exportar a imagem para um arquivo tar
docker save --output myems-cleaning.tar myems/myems-cleaning
- Copiar o arquivo tar para outro computador e, em seguida, carregar a imagem a partir do arquivo tar
docker load --input .\myems-cleaning.tar
Passo 6: myems-normalization
Nesta seção, você irá instalar o myems-normalization no Docker.
- Copiar o código-fonte para o diretório raiz
cp -r myems/myems-normalization /
cd /myems-normalization
- Criar o arquivo .env com base no arquivo example.env
Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.
cp example.env .env
- Construir a Imagem a partir do Código-Fonte
docker build -t myems/myems-normalization .
Para construir para múltiplas plataformas (não apenas para a arquitetura e sistema operacional onde o build está sendo invocado), você pode usar o buildx e definir a flag --platform para especificar a plataforma alvo da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
- Executar um Contêiner Docker (executar como superusuário)
docker run -d -v /myems-normalization/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-normalization myems/myems-normalization
-
-d: Executa o contêiner em segundo plano e imprime o ID do contêiner.
-
-v: Se você usar -v ou --volume para montar um arquivo ou diretório que ainda não existe no host Docker, o -v cria o endpoint para você (sempre como um diretório). A opção ro, se presente, faz com que o bind mount seja montado no contêiner como somente leitura. Para versões v4.7.0 ou anteriores, use '/code/.env' em vez de '/app/.env'.
-
--log-opt max-size=1m: Tamanho máximo do log antes de ser rotacionado. Um inteiro positivo acompanhado de um modificador que representa a unidade de medida (k, m ou g).
-
--log-opt max-file=2: Número máximo de arquivos de log que podem existir. Se a rotação de logs criar arquivos extras, o arquivo mais antigo é removido. Um inteiro positivo.
-
--restart: Política de reinicialização a ser aplicada quando um contêiner é encerrado.
-
--name: Atribui um nome ao contêiner.
O caminho absoluto antes do dois pontos refere-se ao caminho no host e pode variar em seu sistema. O caminho absoluto após o dois pontos refere-se ao caminho no contêiner e NÃO PODE SER ALTERADO. Ao passar o .env como parâmetro de bind mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o contêiner para que a alteração entre em vigor.
- Migrar o Contêiner Docker
Para migrar o contêiner para outro computador:
- Exportar a imagem para um arquivo tar
docker save --output myems-normalization.tar myems/myems-normalization
- Copiar o arquivo tar para outro computador e, em seguida, carregar a imagem a partir do arquivo tar
docker load --input .\myems-normalization.tar
Passo 7: myems-aggregation
Nesta seção, você irá instalar o myems-aggregation no Docker.
- Copiar o código-fonte para o diretório raiz
cp -r myems/myems-aggregation /
cd /myems-aggregation
- Criar o arquivo .env com base no arquivo example.env
cp example.env .env
Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.
- Construir a Imagem a partir do Código-Fonte
docker build -t myems/myems-aggregation .
Para construir para múltiplas plataformas (não apenas para a arquitetura e sistema operacional onde o build está sendo invocado), você pode usar o buildx e definir a flag --platform para especificar a plataforma alvo da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
- Executar um Contêiner Docker (executar como superusuário)
docker run -d -v /myems-aggregation/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-aggregation myems/myems-aggregation
-
-d: Executa o contêiner em segundo plano e imprime o ID do contêiner.
-
-v: Se você usar -v ou --volume para montar um arquivo ou diretório que ainda não existe no host Docker, o -v cria o endpoint para você (sempre como um diretório). A opção ro, se presente, faz com que o bind mount seja montado no contêiner como somente leitura. Para versões v4.7.0 ou anteriores, use '/code/.env' em vez de '/app/.env'.
-
--log-opt max-size=1m: Tamanho máximo do log antes de ser rotacionado. Um inteiro positivo acompanhado de um modificador que representa a unidade de medida (k, m ou g).
-
--log-opt max-file=2: Número máximo de arquivos de log que podem existir. Se a rotação de logs criar arquivos extras, o arquivo mais antigo é removido. Um inteiro positivo.
-
--restart: Política de reinicialização a ser aplicada quando um contêiner é encerrado.
-
--name: Atribui um nome ao contêiner.
O caminho absoluto antes do dois pontos refere-se ao caminho no host e pode variar em seu sistema. O caminho absoluto após o dois pontos refere-se ao caminho no contêiner e NÃO PODE SER ALTERADO. Ao passar o .env como parâmetro de bind mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o contêiner para que a alteração entre em vigor.
-
Migrar o Contêiner Docker
-
Exportar a imagem para um arquivo tar
docker save --output myems-aggregation.tar myems/myems-aggregation
- Copiar o arquivo tar para outro computador e, em seguida, carregar a imagem a partir do arquivo tar
docker load --input .\myems-aggregation.tar
Passo 8: myems-web
Nesta seção, você irá instalar o myems-web no Docker.
- Modificar o arquivo config.js:
Obtenha o mapboxToken em https://mapbox.com e, em seguida, defina showOnlineMap como true. Se você quiser desativar o recurso de mapa online, defina showOnlineMap como false.
cd myems/myems-web
nano src/config.js
- Modificar o arquivo nginx.conf:
Substitua 127.0.0.1:8000 no nginx.conf pelo endereço IP real e porta do myems-api no HOST.
cd myems/myems-web
nano nginx.conf
- Copiar o código-fonte para o diretório raiz
cp -r myems/myems-web /
cd /myems-web
Você pode ignorar com segurança o comando 'npm run build' nesta seção, pois ele é integrado ao Dockerfile.
- Construir a Imagem a partir do Código-Fonte
docker build -t myems/myems-web .
docker image prune -f
Para construir para múltiplas plataformas (não apenas para a arquitetura e sistema operacional onde o build está sendo invocado), você pode usar o buildx e definir a flag --platform para especificar a plataforma alvo da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).
docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
- Executar um Contêiner Docker
No host, montar o nginx.conf via bind mount:
docker run -d -p 80:80 -v /myems-web/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-web myems/myems-web
-
-d: Executa o contêiner em segundo plano e imprime o ID do contêiner.
-
-p: Publica a(s) porta(s) do contêiner no host. A configuração 80:80 (Host:Contêiner) vincula a porta 80 (direita) do contêiner à porta TCP 80 (esquerda) da máquina host.
-
-v: Se você usar -v ou --volume para montar um arquivo ou diretório que ainda não existe no host Docker, o -v cria o endpoint para você (sempre como um diretório). A opção ro, se presente, faz com que o bind mount seja montado no contêiner como somente leitura. Para versões v4.7.0 ou anteriores, use '/code/.env' em vez de '/app/.env'.
-
--log-opt max-size=1m: Tamanho máximo do log antes de ser rotacionado. Um inteiro positivo acompanhado de um modificador que representa a unidade de medida (k, m ou g).
-
--log-opt max-file=2: Número máximo de arquivos de log que podem existir. Se a rotação de logs criar arquivos extras, o arquivo mais antigo é removido. Um inteiro positivo.
-
--restart: Política de reinicialização a ser aplicada quando um contêiner é encerrado.
-
--name: Atribui um nome ao contêiner.
Se você quiser migrar a imagem para outro computador:
- Exportar a imagem para um arquivo tar
docker save --output myems-web.tar myems/myems-web
- Copiar o arquivo tar para outro computador e, em seguida, carregar a imagem a partir do arquivo tar
docker load --input .\myems-web.tar
Pós-instalação
Parabéns! Agora você pode fazer login na UI Admin e na UI Web do MyEMS.
Portas Padrão
MyEMS Web UI: 80
MyEMS API: 8000
MyEMS Admin UI: 8001
Supondo que o endereço do servidor seja 192.168.1.8 (substitua pelo endereço real do servidor) Acesse a MyEMS Web UI em http://192.168.1.8 (a porta 80 pode ser omitida) Acesse a MyEMS Admin UI em http://192.168.1.8:8001
Senhas Padrão
MyEMS Admin UI
Nome de usuário:
administrator
Senha:
!MyEMS1
MyEMS Web UI
Nome de usuário:
administrator@myems.io
Senha:
!MyEMS1
Solução de Problemas
Devido a problemas de rede da ISP, você pode enfrentar lentidão ao baixar imagens. Você pode usar serviços de aceleração de terceiros.