Code Monkey home page Code Monkey logo

dev-stack's Introduction

dev-stack

A ideia por trás do nosso modelo dev-stack é permitir que qualquer desenvolvedor execute nossos projetos de maneira comum, evitando problemas de ambiente que normalmente levam muito tempo para serem resolvidos.

A Stack é composta inicialmente por uma "dev-network", um edge router (traefik) e um dnsserver.

Antes de executar a stack, você deve desabilitar qualquer serviço em execução na porta 80 (apache, nginx, caddy, iis, etc).

Para poder executar esse ambiente de desenvolvimento, você deve instalar previamente o docker e o docker-compose.

Criando a dev network

Para permitir que nossos contâineres se comuniquem, precisamos criar uma rede compartilhada, então, execute o comando abaixo:

docker network create dev-network

DNS Server setup

Para garantir que os projetos funcionem corretamente em seu computador, você deve configurar o servidor DSN primário para 127.0.0.1, então seu computador poderá reconhecer e redirecionar qualquer domínio "*.test" para nosso roteador.

Linux

Algumas distribuições Linux vem com o serviço systemd-resolve ativado, você precisa desativá-lo, pois ele se vincula à porta [53], que entrará em conflito com a porta do Dnsmasq.

Execute os seguintes comandos:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

Altere o arquivo resolv.conf:

ls -jh /etc/resolv.conf
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolv.conf

Se sua distribuição usa o NetworkManager, você deve desabilitar a configuração do dns editando o arquivo /etc/NetworkManager/NetworkManager.conf adicionando o parâmetro:

dns=none

O NetworkManager.conf final deve ser:

[main]
plugins=ifupdown,keyfile
dns=none

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

É possível que ao derrubar o serviço sua conexão tenha problemas. Nesse caso é necessário habilitar a configuração do dns editando o arquivo /etc/NetworkManager/NetworkManager.conf :

dns=default

O NetworkManager.conf default é:

[main]
plugins=ifupdown,keyfile
dns=default

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

Agora reinicie o serviço de gerenciamento de rede:

sudo systemctl restart NetworkManager

Run the stack

Junto dessa stack há dois scripts que podem ser executados para fazer todas as instalações e configurações necessárias. Eles foram criados para rodar a stack em um ambiente Linux. Cada máquina possui configurações únicas, então esses scripts podem não se comportar como esperado em todas as situações.

O script start-dev.sh inicia a stack e configura o Dnsserver. Já o script init-project.sh faz um clone do projeto base do git inicia um container e instala um novo laravel.

Run the stack and Painel

O script painel-start-dev.sh inicia a stack, o painel e configura o Dnsserver. Já o script painel-stop-dev.sh derruba os serviços.

Standard project docker-compose file

version: '3.2'

services:

  app:
    image: ghcr.io/mjpinto-stefanini/php80-fpm:latest
    labels:
      - traefik.http.routers.app.rule=Host(`app.stefanini.test`)
    volumes:
      - ./src:/src
    environment:
      - PROJECT_WEBROOT=/src/public
    

networks:
  default:
    external:
      name: dev-network

dev-stack's People

Contributors

mjpinto-stefanini avatar rodrigolinsbr avatar rclins avatar

Stargazers

Ronaldo Nascimento Santos avatar

Forkers

rnsantos5

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.