Chat global
Diferentes Bancos de dados na mesma maquina
Salve, desenvolvedores de Priston Tale!
Quem trabalha com servidores de PT sabe que lidar com instâncias do SQL Server pode ser um pesadelo: conflito de versões, arquivos espalhados pelo Windows e a dificuldade de manter um ambiente de Desenvolvimento separado do de Testes/Live.
Como alguém que já viu muita "database corrompida" por falta de isolamento, preparei este guia definitivo para vocês usarem Docker. Com ele, você sobe quantos servidores quiser, em segundos, sem sujar seu Windows.
📦 O que é Docker e por que usar Containers?
Se você desenvolve Priston Tale há algum tempo, já deve ter passado pelo trauma de instalar um SQL Server, bagunçar o registro do Windows, e depois não conseguir instalar outra versão por conflitos de DLL ou instâncias. O Docker resolve isso.
1. O que é um Container?
Imagine um contêiner de navio. Dentro dele, você coloca tudo o que a sua aplicação precisa para rodar: o SQL Server, as bibliotecas específicas e as configurações de rede.
-
Isolamento: O que acontece dentro do container não vaza para o seu Windows.
-
Eficiência: Diferente de uma Máquina Virtual (VM), o container não precisa de um sistema operacional inteiro rodando lá dentro. Ele "pega emprestado" o núcleo do seu Windows (via WSL2), o que o torna incrivelmente leve e rápido.
2. O que é o Docker?
- O Docker é a "ferramenta/guindaste" que gerencia esses containers. Ele permite que você baixe uma Imagem (um molde pronto do SQL Server) e crie várias instâncias (containers) a partir dela em segundos.
3. Por que isso é "mágico" para testar Sources de PT?
-
Múltiplas Versões: Você pode ter um container com SQL 2014 para uma source antiga e um SQL 2022 para uma source moderna, rodando ao mesmo tempo, sem que um saiba da existência do outro.
-
Portabilidade: Se você configurar um container perfeito com todas as tabelas e queries de PT, você pode "exportar" isso para outro desenvolvedor e vai funcionar na máquina dele exatamente igual.
-
Limpeza Total: Cansou de testar uma source? Basta deletar o container. Seu Windows continuará limpo, sem restos de arquivos ou serviços inúteis rodando em segundo plano.
🛡️ Guia Definitivo: SQL Server com Docker para PT Devs
Este tutorial cobre desde o "zero" até a restauração das suas tabelas de Account, Game e Logs.
1. O Alicerce (Pré-requisitos)
Antes de qualquer comando, sua máquina precisa estar pronta.
-
Virtualização: Reinicie seu PC, entre na BIOS e garanta que Virtualização (VT-x ou AMD-V) está
Enabled. -
WSL2: Abra o PowerShell como Administrador e digite:
wsl --installReinicie o computador após o término.
- Docker Desktop: Instale o Docker Desktop.
-
-
-
Importante: Nas configurações do Docker, verifique se em Settings > General, a opção
Use the WSL 2 based engineestá marcada. -
📺 Dúvidas na instalação? Assista a este vídeo excelente: Configurando Docker + WSL2 do Zero
-
-
2. Criando Diversos Ambientes (Multi-Portas)
No Priston Tale, você pode querer uma instância para o seu servidor Local e outra para testar uma Nova Source. O segredo está em mapear portas diferentes no Windows para a porta padrão 1433 do container.
Exemplo: Criando dois ambientes distintos
Ambiente 01 (Porta 1433):
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=SuaSenhaForte@2026" `
-p 1433:1433 --name pt_dev `
-v mssql_dev_data:/var/opt/mssql `
-d mcr.microsoft.com/mssql/server:2022-latest
Ambiente 02 (outra source - Porta 1444):
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=SuaSenhaForte@2026" `
-p 1444:1433 --name pt_testes `
-v mssql_testes_data:/var/opt/mssql `
-d mcr.microsoft.com/mssql/server:2022-latest
-
Nota: Repare que o
--namee o-v(volume) devem ser únicos para cada ambiente para não misturar os dados.
3. Restaurando seus Arquivos .bak
Arquivos de Priston geralmente vêm em formato .bak. Como o SQL está dentro do container, siga estes passos:
-
Envie o backup para o container: Abra o terminal onde está seu arquivo
PristonGame.bak:docker cp PristonGame.bak pt_dev:/var/opt/mssql/backup.bak -
Rode o comando de restauração:
docker exec -it pt_dev /opt/mssql-tools/bin/sqlcmd ` -S localhost -U sa -P "SuaSenhaForte@2026" ` -Q "RESTORE DATABASE [PristonGame] FROM DISK = N'/var/opt/mssql/backup.bak' WITH MOVE 'PristonGame_Data' TO '/var/opt/mssql/data/PristonGame.mdf', MOVE 'PristonGame_Log' TO '/var/opt/mssql/data/PristonGame.ldf'"(Ajuste os nomes lógicos 'PristonGame_Data' conforme o seu arquivo .bak original).
4. Troubleshooting: "Por que não funciona?" (Erros Comuns)
❌ Erro: "Port already in use"
- Sintoma: O container não sobe ou dá erro de bind. Causa: Você provavelmente já tem um SQL Server instalado nativamente no Windows ocupando a porta
1433. Solução: Mude o primeiro número do comando-p. Exemplo:-p 1500:1433. Na sua ferramenta de conexão, uselocalhost,1500.
❌ Erro: Container sobe e "morre" em seguida
- Sintoma:
docker psnão mostra nada, masdocker ps -amostra o container comoExited. Causa: Senha fraca. O SQL Server exige caracteres especiais, números e letras maiúsculas. Solução: Verifique os logs comdocker logs pt_dev. Se vir erro de password, apague o container (docker rm pt_dev) e crie novamente com uma senha complexa.
❌ Erro: Não conecta pelo SSMS/Azure Data Studio
- Solução: Certifique-se de marcar a opção "Trust Server Certificate" na tela de conexão, pois o container usa um certificado auto-assinado.
5. Dica Pro: Persistência de Dados
- Nunca rode um container de banco de dados sem a flag
-v. O comando-v nome_do_volume:/var/opt/mssqlgarante que, mesmo se você deletar o container ou atualizar a versão do Docker, suas contas e personagens continuarão salvos no volume criado.
foi muito bom no chat gpt! Só esqueceu de falar que tem volumes no docker pra por os backups da database e não precisa dar comando nenhum pra copiar nada.
vlw
Ótima colab!
Apenas criando um legado 😊
parabéns pelo Tutorial.
já havia usado WSL2 e achei estranho oque você falou de não ser uma VM.
se não fosse VM não teria esse requisito "Virtualização (VT-x ou AMD-V)".
-
Eficiência: Diferente de uma Máquina Virtual (VM), o container não precisa de um sistema operacional inteiro rodando lá dentro. Ele "pega emprestado" o núcleo do seu Windows (via WSL2), o que o torna incrivelmente leve e rápido.
WSL2: é VM de verdade (usa um kernel Linux real), rodando em cima do Hyper-V / Virtual Machine Platform. Por isso ele tem compatibilidade muito melhor com coisas de Linux (Docker, system calls, etc.)
Bom, vou deixar minha contribuição aqui de verdade então. Hoje em dia ta "Na moda" descrever as coisas co código. Infraestrutura como código (Terraform), pipelines deploy é tudo via código (Jenkins, github actions, etc) e com o docker não podia ser diferente.
Ao inves de ficar dando docker run toda hora tem algo que se chama docker compose. Simplesmente crie um arquivo chamado docker-compose.yml e coloque dentro: (a identação ta zuada, não vou arrumar aqui, muito trampo.) Pesquisem sobre docker-compose.
Agora é so fazer docker compose up/down que tudo já sobe. Agora vai de você adicionar uma infinidade de coisas nisso.
services: sqlserver12: image: mcr.microsoft.com/mssql/server:2019-latest container_name: sqlserver environment: ACCEPT_EULA: "Y" MSSQL_SA_PASSWORD: "senha" ports: - "1433:1433" volumes: - sqlserverdata13:/var/opt/mssql - ./Db:/var/opt/mssql/backup healthcheck: test: /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P 'senha' -C -Q "SELECT 1" || exit 1 interval: 10s timeout: 3s retries: 10 start_period: 10s volumes: sqlserverdata13:
Postado por: @developerfoi muito bom no chat gpt! Só esqueceu de falar que tem volumes no docker pra por os backups da database e não precisa dar comando nenhum pra copiar nada.
Muita informação para descrever, mais fácil jogar no gpt e ele organiza as ideias e monta um tutorial rápido.
Realmente é possível fazer isso que você comentou, porém o público-alvo do tutorial é para quem nunca teve contato com o Docker.
abç
Postado por: @n00bieparabéns pelo Tutorial.
já havia usado WSL2 e achei estranho oque você falou de não ser uma VM.
se não fosse VM não teria esse requisito "Virtualização (VT-x ou AMD-V)".
Eficiência: Diferente de uma Máquina Virtual (VM), o container não precisa de um sistema operacional inteiro rodando lá dentro. Ele "pega emprestado" o núcleo do seu Windows (via WSL2), o que o torna incrivelmente leve e rápido.
WSL2: é VM de verdade (usa um kernel Linux real), rodando em cima do Hyper-V / Virtual Machine Platform. Por isso ele tem compatibilidade muito melhor com coisas de Linux (Docker, system calls, etc.)
Você está correto, o objetivo era era diferenciar VM como VirtualBox/VMware, ele utiliza VM sim porem é extremamente mais leve que uma máquina virtual tradicional, pois não precisa emular hardware físico redundante nem carregar um sistema operacional completo para cada instância, compartilhando os recursos do kernel de forma dinâmica e inteligente.
Muito obrigado
- 21 Fóruns
- 290 Tópicos
- 1,726 Posts
- 10 Online
- 316 Membros
