Coder Social home page Coder Social logo

adventuregame's Introduction

AdventureGame

Aplicação Web de um jogo de aventura estilo RPG de mesa

Passo a Passo inicializacao dos microsservicos

  1. Na pasta root monte a imagem docker com o comando:
docker-compose --profile <ambiente> up -d

Substitua "ambiente" pelo ambiente de desenvolvimento desejado (development ou production)

  1. Ambiente development
    1. A seguir rode o servidor desejado utilizando o comando:
docker-compose --profile testing run --rm <NOME_DO_CONTEINER_DE_AMBIENTE_NODE_CRIADO> <COMANDO_INICIALIZACAO>

NOME_DO_CONTEINER_DE_AMBIENTE_NODE_CRIADO: users-dev: microsserviço de auth e usuarios characters-dev: microsserviço de personagens missions-dev: microsserviço de missoes

COMANDO_INICIALIZACAO: npm run dev: microsserviço de auth e usuarios npm start: microsserviço de personagens npm start: microsserviço de missoes

    1. Procure o ip do microsservico Com o codigo abaixo procure o nome do container do projeto
docker network ls

NETWORK_LS

A seguir procure o ip do microsserviço desejado com o comando:

docker network inspect <NOME_CONTAINER>

No caso do exemplo, "NOME_CONTAINER" seria adventuregame_default. Na imagem abaixo, escolhemos o microsservico de users, que foi iniciado no passo 2.1, e procuramos seu endereço de IP que será utilizado para fazer a requisicao

NETWORK_INSPECT

    1. Inicie o jupyter para fazer as requisicoes

Como houve um problema para o mapeamento de portas utilizando o docker para os microsservicos. Utilizamos o notebook jupyter para realizar o mesmo.

Primeiramente roda-se o codigo abaixo e copie o token marcado na imagem.

docker-compose --profile testing logs jupyter

NETWORK_INSPECT

Então, acesse o jupyter, de onde serão feitas as requisições, através do endpoint a seguir:

localhost:4000/<TOKEN>

Dentro do jupyter, copie e rode esse primeiro bloco de código:

from requests import get, post, put, delete
import json

def Interact(method, url, body=None):
    if body:
        response = method(url,data=json.dumps(body),headers={"content-type":"application/json"})
    else:
        response = method(url)
    if response.status_code != 200:
        print("Error: Status code "+ str(response.status_code))
    try:
        return response.json()
    except:
        return response.text

E na linha seguinte monte a requisicao:

body = {"atributo1": "valor1", "atributo2": "atributo2"}

Interact(post, "<IP>/<ENDPOINT>", body)

Em que, "IP" é o copiado no passo anterior e "ENDPOINT" e a rota desejada. Por exemplo, no caso do users, caso deseja-se fazer um cadastro teremos a seguinte requisicao:

body = {"username": "teste", "password": "teste"}

Interact(post, "http://172.23.0.10:3000/register", body)
  1. Teste ambiente de Desenvolvimento Para rodar os testes de o comando:
docker-compose --profile testing run --rm <NOME_DO_CONTEINER_DE_AMBIENTE_NODE_CRIADO> npm test
  1. Ambiente de Producao

Ambientes Docker

Para a execução dos microsserviços, há duas formas diferentes de instanciar todas as imagens: Modo "testing" e modo "production". O modo testing é onde os conteineres é onde os conteineres executam o bash e permitem a entrada em um shell do conteiner para execução de comandos arbitrários. No modo production, todos os conteineres são instanciados com o comando "npm start" para a execução dos respectivos servidores no ambiente próprio pra produção.

Modo testing

No modo testing, execute:

docker-compose --profile testing up -d

Para a inicialização de todos os conteineres auxiliares do sistema.

Para a execução de testes, execute o comando:

docker-compose --profile testing run <conteiner-teste> npm test

Para executar os testes unitários. Atualmente apenas o "characters-dev" pode ser instanciado.

adventuregame's People

Contributors

fdms-3741 avatar rnagao avatar fdms-gta avatar ricardossiqueira avatar

Stargazers

Vinicius Romão dos Santos avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.