Ir para o conteúdo principal

Docker no Windows

Neste guia, você irá implantar o MyEMS com Docker no Windows.

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 (banco de dados e container Docker).

Clone o código-fonte:

cd ~
git clone https://github.com/myems/myems

Etapa 1 Banco de Dados

Veja Banco de Dados

Etapa 2 myems-api

Nesta seção, você irá instalar o myems-api no Docker.

  • Copie o código-fonte para o diretório raiz
cp -r myems/myems-api c:\
cd c:\myems-api
  • Crie o arquivo .env com base no example.env
Cuidado

Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.

cp example.env .env
  • Construa a imagem a partir do código-fonte
docker build -t myems/myems-api .

Para construir para múltiplas plataformas e não apenas para a arquitetura e sistema operacional do usuário que está executando o build. Você pode usar buildx e definir a flag --platform para especificar a plataforma de destino da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-api .
  • Execute um container Docker

On host, create a folder at c:\myems-upload, and bind-mount it to the container, and also bind-mount the .env to the container:

docker run -d -p 8000:8000 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\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 Run container in background and print container ID

  • -p Publish a container's port(s) to the host, 8000:8000 (Host:Container) binds port 8000 (right) of the container to TCP port 8000 (left) of the host machine.

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

O caminho absoluto antes dos dois pontos é para o host e pode variar no seu sistema. O caminho absoluto após os dois pontos é para o container e NÃO pode ser alterado. Ao passar .env como parâmetro bind-mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o container para que a alteração tenha efeito.

Se quiser migrar a imagem para outro computador,

  • Exporte a imagem para um arquivo tarball
docker save --output myems-api.tar myems/myems-api
  • Copie o arquivo tarball para outro computador e então carregue a imagem a partir do arquivo tarball
docker load --input .\myems-api.tar

Etapa 3 myems-admin

Nesta seção, você irá instalar o myems-admin no Docker.

  • Copie o código-fonte para o diretório raiz
cp -r myems/myems-admin c:\
cd c:\myems-admin
Cuidado

Substitua manualmente 127.0.0.1:8000 no nginx.conf pelo endereço IP e porta reais do HOST do myems-api

notepad nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Construa a imagem a partir do código-fonte
docker build -t myems/myems-admin .

Para construir para múltiplas plataformas e não apenas para a arquitetura e sistema operacional do usuário que está executando o build. Você pode usar buildx e definir a flag --platform para especificar a plataforma de destino da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Execute um container Docker

On host, create a folder at c:\myems-upload, and bind-mount it to the container, and also bind-mount the nginx.conf to the container: -v parameter for upload folder must be same with that in myems-api

docker run -d -p 8001:8001 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\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 Run container in background and print container ID

  • -p Publish a container's port(s) to the host, 8001:8001 (Host:Container) binds port 8001 (right) of the container to TCP port 8001 (left) of the host machine.

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

Se quiser migrar a imagem para outro computador,

  • Exporte a imagem para um arquivo tarball
docker save --output myems-admin.tar myems/myems-admin
  • Copie o arquivo tarball para outro computador e então carregue a imagem a partir do arquivo tarball
docker load --input .\myems-admin.tar

Etapa 4 myems-modbus-tcp

Nesta seção, você irá instalar o myems-modbus-tcp no Docker.

  • Copie o código-fonte para o diretório raiz
cp -r myems/myems-modbus-tcp c:\
cd c:\myems-modbus-tcp
  • Crie o arquivo .env com base no example.env
Cuidado

Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.

cp example.env .env
  • Construa a imagem a partir do código-fonte
docker build -t myems/myems-modbus-tcp .

Para construir para múltiplas plataformas e não apenas para a arquitetura e sistema operacional do usuário que está executando o build. Você pode usar buildx e definir a flag --platform para especificar a plataforma de destino 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 .
  • Execute um container Docker (Execute como Administrador)
docker run -d -v c:\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 Run container in background and print container ID

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

O caminho absoluto antes dos dois pontos é para o host e pode variar no seu sistema. O caminho absoluto após os dois pontos é para o container e NÃO pode ser alterado. Ao passar .env como parâmetro bind-mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o container para que a alteração tenha efeito.

  • Migre o container Docker

Para migrar o container para outro computador,

  • Exporte a imagem para um arquivo tarball
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Copie o arquivo tarball para outro computador e então carregue a imagem a partir do arquivo tarball
docker load --input .\myems-modbus-tcp.tar

Etapa 5 myems-cleaning

Nesta seção, você irá instalar o myems-cleaning no Docker.

  • Copie o código-fonte para o diretório raiz
cp -r myems/myems-cleaning c:\
cd c:\myems-cleaning
  • Crie o arquivo .env com base no example.env
Cuidado

Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.

cp example.env .env
  • Construa a imagem a partir do código-fonte
docker build -t myems/myems-cleaning .

Para construir para múltiplas plataformas e não apenas para a arquitetura e sistema operacional do usuário que está executando o build. Você pode usar buildx e definir a flag --platform para especificar a plataforma de destino da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Execute um container Docker (Execute como Administrador)
docker run -d -v c:\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 Run container in background and print container ID

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

O caminho absoluto antes dos dois pontos é para o host e pode variar no seu sistema. O caminho absoluto após os dois pontos é para o container e NÃO pode ser alterado. Ao passar .env como parâmetro bind-mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o container para que a alteração tenha efeito.

  • Migre o container Docker

Para migrar o container para outro computador,

  • Exporte a imagem para um arquivo tarball
docker save --output myems-cleaning.tar myems/myems-cleaning
  • Copie o arquivo tarball para outro computador e então carregue a imagem a partir do arquivo tarball
docker load --input .\myems-cleaning.tar

Etapa 6 myems-normalization

Nesta seção, você irá instalar o myems-normalization no Docker.

  • Copie o código-fonte para o diretório raiz
cp -r myems/myems-normalization c:\
cd c:\myems-normalization
  • Crie o arquivo .env com base no example.env
Cuidado

Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.

cp example.env .env
  • Construa a imagem a partir do código-fonte
docker build -t myems/myems-normalization .

Para construir para múltiplas plataformas e não apenas para a arquitetura e sistema operacional do usuário que está executando o build. Você pode usar buildx e definir a flag --platform para especificar a plataforma de destino da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Execute um container Docker (Execute como Administrador)
docker run -d -v c:\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 Run container in background and print container ID

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

O caminho absoluto antes dos dois pontos é para o host e pode variar no seu sistema. O caminho absoluto após os dois pontos é para o container e NÃO pode ser alterado. Ao passar .env como parâmetro bind-mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o container para que a alteração tenha efeito.

  • Migre o container Docker

Para migrar o container para outro computador,

  • Exporte a imagem para um arquivo tarball
docker save --output myems-normalization.tar myems/myems-normalization
  • Copie o arquivo tarball para outro computador e então carregue a imagem a partir do arquivo tarball
docker load --input .\myems-normalization.tar

Etapa 7 myems-aggregation

Nesta seção, você irá instalar o myems-aggregation no Docker.

  • Copie o código-fonte para o diretório raiz
cp -r myems/myems-aggregation c:\
cd c:\myems-aggregation
  • Crie o arquivo .env com base no example.env
Cuidado

Substitua manualmente 127.0.0.1 pelo endereço IP real do HOST.

cp example.env .env
  • Construa a imagem a partir do código-fonte
docker build -t myems/myems-aggregation .

Para construir para múltiplas plataformas e não apenas para a arquitetura e sistema operacional do usuário que está executando o build. Você pode usar buildx e definir a flag --platform para especificar a plataforma de destino da saída do build (por exemplo, linux/amd64, linux/arm64 ou darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Execute um container Docker (execute como Administrador)
docker run -d -v c:\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 Run container in background and print container ID

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

O caminho absoluto antes dos dois pontos é para o host e pode variar no seu sistema. O caminho absoluto após os dois pontos é para o container e NÃO pode ser alterado. Ao passar .env como parâmetro bind-mount, você pode alterar os valores de configuração posteriormente. Se você alterar o arquivo .env, reinicie o container para que a alteração tenha efeito.

  • Migre o container Docker

  • Exporte a imagem para um arquivo tarball

docker save --output myems-aggregation.tar myems/myems-aggregation
  • Copie o arquivo tarball para outro computador e então carregue a imagem a partir do arquivo tarball
docker load --input .\myems-aggregation.tar

Etapa 8 myems-web

Nesta seção, você irá instalar o myems-web no Docker.

  • Modifique o arquivo config.js:
Nota

Obtenha o mapboxToken em https://mapbox.com e então defina showOnlineMap como true. Se quiser desativar o recurso de mapa online, defina showOnlineMap como false

cd myems/myems-web
notepad src/config.js
Cuidado

Substitua 127.0.0.1:8000 no nginx.conf pelo IP e porta reais do HOST do myems-api

cd myems/myems-web
notepad nginx.conf
  • Copie o código-fonte para o diretório raiz
cp -r myems/myems-web c:\
cd c:\myems-web
Informações

Você pode ignorar com segurança o comando 'npm run build' nesta seção, pois ele já está incluído no Dockerfile

  • Construa a imagem a partir do código-fonte
docker build -t myems/myems-web .
docker image prune -f

Para construir para múltiplas plataformas e não apenas para a arquitetura e sistema operacional do usuário que está executando o build. Você pode usar buildx e definir a flag --platform para especificar a plataforma de destino 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
  • Execute um container Docker

On host, bind-mount nginx.conf

docker run -d -p 80:80 -v c:\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 Run container in background and print container ID

  • -p Publish a container's port(s) to the host, 80:80 (Host:Container) binds port 80 (right) of the container to TCP port 80 (left) of the host machine.

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

Se quiser migrar a imagem para outro computador,

  • Exporte a imagem para um arquivo tarball
docker save --output myems-web.tar myems/myems-web
  • Copie o arquivo tarball para outro computador e então carregue a imagem a partir do arquivo tarball
docker load --input .\myems-web.tar

Pós-instalação

Parabéns! Agora você pode acessar a interface de administração e a interface web do MyEMS.

Portas Padrão

Interface Web do MyEMS: 80

API do MyEMS: 8000

Interface Admin do MyEMS: 8001

Supondo que o endereço do servidor seja 192.168.1.8 (substitua pelo endereço real) Acesse a interface web do MyEMS em http://192.168.1.8 (80 pode ser omitido) Acesse a interface admin do MyEMS em http://192.168.1.8:8001

Senhas Padrão

Interface Admin do MyEMS

Usuário:

administrator

Senha:

!MyEMS1

Interface Web do MyEMS

Usuário:

administrator@myems.io

Senha:

!MyEMS1

Solução de problemas

Como resolver problemas de timeout ao baixar imagens

Devido a problemas de rede do provedor, você pode experimentar lentidão ao baixar imagens. Você pode usar serviços de aceleração de terceiros.