Neste tutorial, irei ensinar configurar o Docker no windows e rodar seu otserver
- Diferença entre Docker x Máquina virtual:
Docker e Máquinas Virtuais (VMs) ambas são fundamentais usadas para isolar recursos em um sistema de computação, mas funcionam de maneiras muito diferentes.
- VMs são ambientes de computação completos, incluindo um sistema operacional (SO) completo, que simulam o hardware de um computador físico. Isso significa que cada VM é um sistema autônomo e independente.
- Já o Docker, usa a tecnologia de contêineres. Os contêineres compartilham o mesmo sistema operacional do host, mas mantêm seu próprio espaço de processo, arquivos e rede. Isso significa que eles são muito mais leves do que as VMs, pois não precisam de um SO completo, e podem ser iniciados e parados muito mais rapidamente.
- Vantagens em utilizar o Docker
O Docker oferece várias vantagens significativas:
- Eficiência de recursos: Como os contêineres Docker compartilham o SO do host, eles são mais leves e usam menos recursos do que as VMs.
- Portabilidade: O Docker permite que você "construa uma vez, execute em qualquer lugar". Uma vez criado um contêiner Docker, ele pode ser executado em qualquer sistema que suporte o Docker, independentemente das configurações subjacentes.
- Isolamento: Cada contêiner Docker é isolado do resto do sistema, o que ajuda a evitar conflitos entre diferentes aplicações e versões de software.
- Integração e entrega contínua: O Docker se integra bem com ferramentas de CI/CD (Integração Contínua / Entrega Contínua), permitindo a automatização de testes e implantação de aplicações.
- Escalabilidade e Orquestração: O Docker facilita a escalabilidade de aplicações, permitindo que múltiplos contêineres sejam implantados facilmente. Além disso, com ferramentas como Docker Swarm e Kubernetes, a orquestração de contêineres se torna eficiente e gerenciável
Colocando a mão na massa
Este tutorial será dividido nas seguintes etapas:
- Preparação do Windows
- Instalando o Docker
- Instalando imagens mariadb e phpmyadmin
- Realizando a build da imagem TFS
1º PASSO: Preparando o Windows com o subsistema Linux.
AVISO: Essa Etapa será necessária somente caso ainda não possua o subsistema Linux ativado em seu windows
Os comandos a seguir, serão todos utilizando o POWERSHELL do windows, na barra de pesquisa digite POWERSHELL e execute como administrador.
Com o POWERSHELL aberto, execute os seguintes comandos:
-
Habilitando subsistema Linux:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- Habilitando recurso de máquina virtual:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- Baixe e instale Kernel do Linux:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
Após essa etapa, será necessário reiniciar o computador para atualização, após reiniciar, abra novamente o PowerShell
- Definindo o WSL 2 como padrão:
wsl --set-default-version 2
Após esses passos, basta entrar na Microsoft Store e instalar o sistema Ubuntu:
Após a instalação, abra o Ubuntu, como será a primeira vez, irá solicitar para que digite um nome de usuário e uma senha.
Etapa 1 concluída.
Fonte: https://learn.microsoft.com/pt-br/windows/wsl/install-manual
2º PASSO: Instalando Docker.
este é um passo simples, apenas entre no site oficial do Docker, baixe e instale o Docker Desktop
https://www.docker.com/
Etapa 2 concluída.
3º PASSO: Instalando imagens MariaDB e phpMyAdmin
Assim como no passo 1, execute novamente o PowerShell como administrador e siga os seguintes passos:
- Primeiro vamos baixar as imagens necessárias, execute os seguintes comandos:
docker pull mariadb
docker pull phpmyadmin/phpmyadmin
- Agora iremos criar uma "Rede" para que o docker se comunique entre os containers que iremos utilizar. Execute o seguinte comando:
docker network create mynetwork
mynetwork é o nome que defini neste caso, você pode utilizar o nome que achar melhor, porém lembre-se desse nome que iremos utilizar nos próximos passos.
- Agora iremos iniciar essas imagens, utilizando os seguintes comandos:
docker run --name mariadb --network=mynetwork -e MYSQL_ROOT_PASSWORD=your_password -d mariadb
your_password = altere pela senha que deseja utilizar no mysql
mynetwork = é o nome que criamos no passo anterior
docker run --name myadmin --network=mynetwork --link mariadb:db -d -p 8080:80 phpmyadmin/phpmyadmin
Lembrando novamente, mynetwork é o nome criado anteriormente
Após esses passos, será possível ver seu container rodando no Docker Desktop:
Etapa 3 concluída.
4º PASSO: Gerando Imagem do TFS e configurações necessárias:
- Baixe a TFS, nesse exemplo será o repositório oficial https://github.com/otland/forgottenserver
- Extraia os arquivos após baixar
- com o container mariadb e phpmyadmin rodando, acesse http://localhost:8080/ com o login root, e a senha que criou no passo 3, crie uma nova base de dados e importe o arquivo schema.sql do servidor
-
edite o arquivo config.lua.dist
-- MySQL
mysqlHost = "mariadb"
mysqlUser = "root"
mysqlPass = "SUA SENHA CRIADO NO PASSO 3"
mysqlDatabase = "NOME DA DATABASE"
mysqlPort = 3306
mysqlSock = ""
mariadb é o nome do container que estamos rodando o mysql
** Caso queira utilizar todo potencial do seu computador na hora de buildar a TFS, no arquivo Dockerfile, edite a linha 18:
RUN cmake --preset default && cmake --build --config RelWithDebInfo --preset default
para
RUN cmake --preset default && cmake --build --config RelWithDebInfo --preset default -- -j 16
onde 16 é o numero de processadores lógicos que deseja ser utilizados, não é necessário utilizar 100% porém quanto mais melhor, porém caso utilize mais do que está disponível poderá travar, então utilize a quantidade mostrada pra menos.
no gerenciador de tarefas aba desempenho, é possível visualizar a quantidade de núcleos e processadores lógicos do seu CPU
- Após isso, entre no Power Shell e execute o comando:
docker build -t server .
onde "server" é o nome da imagem que será gerada
- Após isso, é só iniciar o servidor com o seguinte comando
docker run --name server --network=mynetwork -p 7171:7171 -p 7172:7172 -d server
lembrando que mynetwork é o nome que geramos no passo 3, e o ultimo parametro é nome da imagem que geramos anteriormente.
Você poderá ver seu sevidor ronando no Docker Desktop:
caso queira parar algum servidor ou iniciar novamente, é só clicar no botão de ação:
Caso precise fazer alguma alteração no server, basta utilizar os comandos de build e run citados anteriormente.
Para ver os logs, basta clicar em "server" ou o nome que escolheu:
Lembrando que isso é um tutorial básico para rodar o servidor na máquina local, qualquer dúvida ou sugestão, deixe comentário.