Ir para o conteúdo principal

podman-linux


Podman no Linux

Neste guia, você implantará o MyEMS com Podman no Linux.

Pré-requisitos

  • Podman e npm instalados no host.
  • Servidor MySQL instalado.
  • O banco de dados MySQL pode ser conectado a partir do host no qual o Motor Podman é executado.
Cuidado
  • É recomendável usar privilégios de root para executar comandos do podman.

  • Após instalar o podman, use o comando systemctl status podman-restart.service para verificar se os contêineres estão configurados para inicialização automática e política. Se Unit not found for exibido, significa que o contêiner não pode ser iniciado automaticamente.

Passo 1 Banco de Dados

Consulte Banco de Dados

Passo 2 myems-api

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

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

Substitua manualmente 127.0.0.1 pelo endereço IP HOST real.

cp example.env .env
  • Construa a Imagem a partir do Código-Fonte
podman build -t myems/myems-api .

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

podman buildx build --platform=linux/amd64 -t myems/myems-api .
  • Execute um contêiner Podman

No host, crie uma pasta de arquivos de upload compartilhada:

mkdir /myems-upload

Crie um contêiner, monte a pasta compartilhada no contêiner e também monte o .env no contêiner:

podman 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 Execute o contêiner em segundo plano e imprima o ID do contêiner

  • -p Publique a(s) porta(s) de um contêiner no host, 8000:8000 (Host:Container) 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 Podman, -v cria o endpoint para você. Ele é sempre criado como um diretório. A opção ro, se presente, faz com que a montagem de ligação seja montada 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=2m O tamanho máximo do log antes de ser rolado. Um inteiro positivo mais um modificador representando a unidade de medida (k, m ou g).

  • --log-opt max-file=2 O número máximo de arquivos de log que podem estar presentes. Se a rotação dos logs criar arquivos em excesso, o arquivo mais antigo é removido. Um inteiro positivo.

  • --restart Política de reinicialização a ser aplicada quando um contêiner é encerrado

  • --name Atribua um nome ao contêiner

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

Se você quiser migrar a imagem para outro computador,

  • Exporte a imagem para um arquivo tarball
podman save --output myems-api.tar myems/myems-api
  • Copie o arquivo tarball para outro computador e, em seguida, carregue a imagem do arquivo tarball
podman load --input .\myems-api.tar

Passo 3 myems-admin

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

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

Substitua manualmente 127.0.0.1:8000 em nginx.conf pelo ip e porta HOST reais do myems-api

nano nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Construa a Imagem a partir do Código-Fonte
podman build -t myems/myems-admin .

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

podman buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Execute um contêiner Podman

No host, crie uma pasta de arquivos de upload compartilhada:

mkdir /myems-upload

Crie um contêiner, monte a pasta de arquivos de upload compartilhada no contêiner e também monte o nginx.conf

podman 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 Execute o contêiner em segundo plano e imprima o ID do contêiner

  • -p Publique a(s) porta(s) de um contêiner no host, 8001:8001 (Host:Container) 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 Podman, -v cria o endpoint para você. Ele é sempre criado como um diretório. A opção ro, se presente, faz com que a montagem de ligação seja montada 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=2m O tamanho máximo do log antes de ser rolado. Um inteiro positivo mais um modificador representando a unidade de medida (k, m ou g).

  • --log-opt max-file=2 O número máximo de arquivos de log que podem estar presentes. Se a rotação dos logs criar arquivos em excesso, o arquivo mais antigo é removido. Um inteiro positivo.

  • --restart Política de reinicialização a ser aplicada quando um contêiner é encerrado

  • --name Atribua um nome ao contêiner

Se você quiser migrar a imagem para outro computador,

  • Exporte a imagem para um arquivo tarball
podman save --output myems-admin.tar myems/myems-admin
  • Copie o arquivo tarball para outro computador e, em seguida, carregue a imagem do arquivo tarball
podman load --input .\myems-admin.tar

Passo 4 myems-modbus-tcp

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

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

Substitua manualmente 127.0.0.1 pelo endereço IP HOST real.

cp example.env .env
  • Construa a Imagem a partir do Código-Fonte
podman build -t myems/myems-modbus-tcp .

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

podman buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Execute um contêiner Podman (execute como superusuário)
podman 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 Execute o contêiner em segundo plano e imprima 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 Podman, -v cria o endpoint para você. Ele é sempre criado como um diretório. A opção ro, se presente, faz com que a montagem de ligação seja montada 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=2m O tamanho máximo do log antes de ser rolado. Um inteiro positivo mais um modificador representando a unidade de medida (k, m ou g).

  • --log-opt max-file=2 O número máximo de arquivos de log que podem estar presentes. Se a rotação dos logs criar arquivos em excesso, o arquivo mais antigo é removido. Um inteiro positivo.

  • --restart Política de reinicialização a ser aplicada quando um contêiner é encerrado

  • --name Atribua um nome ao contêiner

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

  • Migre o contêiner Podman

Para migrar o contêiner para outro computador,

  • Exporte a imagem para um arquivo tarball
podman save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Copie o arquivo tarball para outro computador e, em seguida, carregue a imagem do arquivo tarball
podman load --input .\myems-modbus-tcp.tar

Passo 5 myems-cleaning

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

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

Substitua manualmente 127.0.0.1 pelo endereço IP HOST real.

cp example.env .env
  • Construa a Imagem a partir do Código-Fonte
podman build -t myems/myems-cleaning .

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

podman buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Execute um contêiner Podman (execute como superusuário)
podman 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 Execute o contêiner em segundo plano e imprima 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 Podman, -v cria o endpoint para você. Ele é sempre criado como um diretório. A opção ro, se presente, faz com que a montagem de ligação seja montada 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=2m O tamanho máximo do log antes de ser rolado. Um inteiro positivo mais um modificador representando a unidade de medida (k, m ou g).

  • --log-opt max-file=2 O número máximo de arquivos de log que podem estar presentes. Se a rotação dos logs criar arquivos em excesso, o arquivo mais antigo é removido. Um inteiro positivo.

  • --restart Política de reinicialização a ser aplicada quando um contêiner é encerrado

  • --name Atribua um nome ao contêiner

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

  • Migre o contêiner Podman

Para migrar o contêiner para outro computador,

  • Exporte a imagem para um arquivo tarball
podman save --output myems-cleaning.tar myems/myems-cleaning
  • Copie o arquivo tarball para outro computador e, em seguida, carregue a imagem do arquivo tarball
podman load --input .\myems-cleaning.tar

Passo 6 myems-normalization

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

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

Substitua manualmente 127.0.0.1 pelo endereço IP HOST real.

cp example.env .env
  • Construa a Imagem a partir do Código-Fonte
podman build -t myems/myems-normalization .

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

podman buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Execute um contêiner Podman (execute como superusuário)
podman 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 Execute o contêiner em segundo plano e imprima 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 Podman, -v cria o endpoint para você. Ele é sempre criado como um diretório. A opção ro, se presente, faz com que a montagem de ligação seja montada 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=2m O tamanho máximo do log antes de ser rolado. Um inteiro positivo mais um modificador representando a unidade de medida (k, m ou g).

  • --log-opt max-file=2 O número máximo de arquivos de log que podem estar presentes. Se a rotação dos logs criar arquivos em excesso, o arquivo mais antigo é removido. Um inteiro positivo.

  • --restart Política de reinicialização a ser aplicada quando um contêiner é encerrado

  • --name Atribua um nome ao contêiner

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

  • Migre o contêiner Podman

Para migrar o contêiner para outro computador,

  • Exporte a imagem para um arquivo tarball
podman save --output myems-normalization.tar myems/myems-normalization
  • Copie o arquivo tarball para outro computador e, em seguida, carregue a imagem do arquivo tarball
podman load --input .\myems-normalization.tar

Passo 7 myems-aggregation

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

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

Substitua manualmente 127.0.0.1 pelo endereço IP HOST real.

  • Construa a Imagem a partir do Código-Fonte
podman build -t myems/myems-aggregation .

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

podman buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Execute um contêiner Podman (execute como superusuário)
podman 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 Execute o contêiner em segundo plano e imprima 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 Podman, -v cria o endpoint para você. Ele é sempre criado como um diretório. A opção ro, se presente, faz com que a montagem de ligação seja montada 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=2m O tamanho máximo do log antes de ser rolado. Um inteiro positivo mais um modificador representando a unidade de medida (k, m ou g).

  • --log-opt max-file=2 O número máximo de arquivos de log que podem estar presentes. Se a rotação dos logs criar arquivos em excesso, o arquivo mais antigo é removido. Um inteiro positivo.

  • --restart Política de reinicialização a ser aplicada quando um contêiner é encerrado

  • --name Atribua um nome ao contêiner

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

  • Migre o contêiner Podman

  • Exporte a imagem para um arquivo tarball

podman save --output myems-aggregation.tar myems/myems-aggregation
  • Copie o arquivo tarball para outro computador e, em seguida, carregue a imagem do arquivo tarball
podman load --input .\myems-aggregation.tar

Passo 8 myems-web

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

  • Modifique o arquivo config.js:
Nota

Obtenha o mapboxToken em https://mapbox.com e então 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
Cuidado

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

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

Você pode ignorar com segurança o comando 'npm run build' nesta seção, porque ele está embutido no Podmanfile

  • Construa a Imagem a partir do Código-Fonte
podman build -t myems/myems-web .

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

podman buildx build --platform=linux/amd64 -t myems/myems-web .
  • Execute um contêiner Podman

No host, monte o nginx.conf

podman 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 Execute o contêiner em segundo plano e imprima o ID do contêiner

  • -p Publique a(s) porta(s) de um contêiner no host, 80:80 (Host:Container) 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 Podman, -v cria o endpoint para você. Ele é sempre criado como um diretório. A opção ro, se presente, faz com que a montagem de ligação seja montada 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=2m O tamanho máximo do log antes de ser rolado. Um inteiro positivo mais um modificador representando a unidade de medida (k, m ou g).

  • --log-opt max-file=2 O número máximo de arquivos de log que podem estar presentes. Se a rotação dos logs criar arquivos em excesso, o arquivo mais antigo é removido. Um inteiro positivo.

  • --restart Política de reinicialização a ser aplicada quando um contêiner é encerrado

  • --name Atribua um nome ao contêiner

Se você quiser migrar a imagem para outro computador,

  • Exporte a imagem para um arquivo tarball
podman save --output myems-web.tar myems/myems-web
  • Copie o arquivo tarball para outro computador e, em seguida, carregue a imagem do arquivo tarball
podman load --input .\myems-web.tar

Pós-instalação

Parabéns! Agora você pode fazer login na Interface de Administração do MyEMS e na Interface Web.

Portas Padrão

Interface Web do MyEMS: 80

API do MyEMS: 8000

Interface de Administração do MyEMS: 8001

Supondo que o endereço do servidor seja 192.168.1.8 (substitua pelo endereço real do servidor) Acesse a Interface Web do MyEMS em http://192.168.1.8 (80 pode ser omitido) Acesse a Interface de Administração do MyEMS em http://192.168.1.8:8001

Senhas Padrão

Interface de Administração do MyEMS

Nome de usuário:

administrator

Senha:

!MyEMS1

Interface Web do MyEMS

Nome de usuário:

administrator@myems.io

Senha:

!MyEMS1

Solução de Problemas