podman-linux
sidebar_position: 14
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.
-
É recomendável usar privilégios de root para executar comandos do podman.
-
Após instalar o podman, use o comando
systemctl status podman-restart.servicepara verificar se os contêineres estão configurados para inicialização automática e política. SeUnit not foundfor 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
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
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
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
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
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
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:
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
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
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