---
title: "Signer - Docker Swarm"
description: "Como instalar o Signer on-premises em Docker Swarm: baixe os templates de compose e de configuração e crie os secrets da senha SQL e da chave de criptografia."
canonical: "https://docs.lacunasoftware.com/articles/signer/on-premises/docker/docker-swarm"
locale: "pt-BR"
product: "Signer"
last_updated: "2026-10-12"
---

# Signer - Docker Swarm

Para instalar uma instância [on-premises](https://docs.lacunasoftware.com/articles/signer/on-premises) do [Signer](https://docs.lacunasoftware.com/articles/signer) em Docker, siga os passos abaixo. Para outras plataformas, [clique aqui](https://docs.lacunasoftware.com/articles/signer/on-premises).

Baixe o arquivo compose e os templates dos arquivos de configuração:

```sh
curl -O https://cdn.lacunasoftware.com/signer/docker/signer-stack.yml
curl -O https://cdn.lacunasoftware.com/signer/docker/signer.json
curl -O https://cdn.lacunasoftware.com/signer/docker/signer-proxy.conf
```

Gere a senha do SQL e armazene-a como um secret do Docker:

```sh
openssl rand -base64 24 | docker secret create signer_sql_password -
```

> **Observação**
>
> Se preferir usar uma senha do SQL escolhida por você, execute `echo 'mypass' | docker secret create signer_sql_password -`

Gere a chave de criptografia e armazene-a como um secret do Docker:

```sh
openssl rand -hex 32 | docker secret create signer_encryption_key -
```

> **Observação**
>
> Se estiver migrando de uma instalação anterior, use a chave de criptografia gerada anteriormente

Edite o arquivo de configuração do Signer:

```sh
nano signer.json
```

Siga as instruções do arquivo para preenchê-lo.

> **Dica**
>
> Para instruções sobre configurações específicas do arquivo *signer.json*, consulte as [instruções de instalação em Ubuntu](https://docs.lacunasoftware.com/articles/signer/on-premises/linux/install-ubuntu)

Edite o arquivo de configuração do Nginx:

```sh
nano signer-proxy.conf
```

Substitua a entrada `server_name` pelo domínio do seu site.

Baixe as imagens antecipadamente:

```sh
docker image pull mcr.microsoft.com/mssql/server:2019-latest
docker image pull lacunasoftware/signer:1.9
docker image pull nginx:1.16
```

> **Observação**
>
> Este passo não é estritamente necessário, pois as imagens seriam baixadas automaticamente no próximo comando. No entanto, ele
> evita erros transitórios durante a implantação, já que nem todo orquestrador respeita as instruções `depends_on`.

Faça o deploy da stack do Signer:

```sh
docker stack deploy -c signer-stack.yml signer
```

Verifique o status da implantação:

```sh
watch docker stack ps signer
```

Acompanhe a coluna *CURRENT STATE*. Aguarde até que todos os serviços estejam *Running* (isso pode levar alguns minutos no caso do serviço *signer_sql*).

Verifique os logs do serviço *signer*:

```sh
docker service logs signer_signer -f
```

A saída esperada é semelhante a:

```plaintext
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | Signer entrypoint invoked
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | Building connection string
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | Assuming SQL_HOST = sql
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | Assuming SQL_PORT = default port (1433)
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | Assuming SQL_USER = SA
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | Assuming SQL_DATABASE = Signer
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | Connection string: "Data Source=sql;Initial Catalog=Signer;User ID=SA;Password=REDACTED"
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | Starting application
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | warn: Microsoft.EntityFrameworkCore.Model.Validation[30000]
signer_signer.1.y56lfxi6rn0i@ubuntu1804    |       No type was specified for the decimal column 'Value' on entity type 'Invoice'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | warn: Microsoft.EntityFrameworkCore.Model.Validation[30000]
signer_signer.1.y56lfxi6rn0i@ubuntu1804    |       No type was specified for the decimal column 'BillingLimit' on entity type 'Subscription'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.
signer_signer.1.y56lfxi6rn0i@ubuntu1804    | info: Lacuna.Signer.Site.Startup.RecurringJobsInit[0]
signer_signer.1.y56lfxi6rn0i@ubuntu1804    |       Initializing recurring jobs
```

> **Observação**
>
> Na primeira execução da stack, pode aparecer o erro *A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible.*
> Isso acontece porque o serviço do SQL Server leva algum tempo para ficar pronto. Em geral, a stack se recupera disso automaticamente.

Teste o painel (substitua *signer.patorum.com* pelo domínio do seu site):

```sh
curl -H "Host: signer.patorum.com" http://127.0.0.1/api/system/info
```

A saída esperada é semelhante a:

```json
{"productName":"Lacuna.Signer.Site","productVersion":"1.x.x","timestamp":"..."}
```

Se você tiver um certificado SSL válido para o seu site, siga os passos de [Habilitando SSL em Docker](https://docs.lacunasoftware.com/articles/signer/on-premises/docker/docker-swarm/enable-ssl).

## Veja também

* [Habilitando SSL em Docker](https://docs.lacunasoftware.com/articles/signer/on-premises/docker/docker-swarm/enable-ssl)
* [Usando um banco de dados externo em Docker](https://docs.lacunasoftware.com/articles/signer/on-premises/docker/docker-swarm/external-db)
* [Verificando os logs do sistema em Docker](https://docs.lacunasoftware.com/articles/signer/on-premises/docker/docker-swarm/check-logs)
* [Dados persistentes (considerações sobre backup)](https://docs.lacunasoftware.com/articles/signer/on-premises/docker/docker-swarm/persistent-data)
* [Usando uma stack com GrantID](https://docs.lacunasoftware.com/articles/signer/on-premises/docker/docker-swarm/internal-grantid)
