Ir para conteúdo
Anderson Modolon

Virtualizar ambiente de desenvolvimento (Virtual Box ou Vagrant)

Recommended Posts

É interessante ter o ambiente de desenvolvimento virtualizado (vamos supor, com o Virtual Box ou Vagrant) ou ter tudo instalado na máquina na forma "tradicional"?

 

Alguém utiliza ambiente de desenvolvimento virtualizado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

VirtualBox e Vagrant são coisas completamente diferentes. Você pode perfeitamente ter um ambiente utilizando ambas as ferramentas.

O VirtualBox virtualiza o sistema operacional.

O Vagrant gerencia e configura esse sistema.

 

Por experiência própria eu digo: fuja disso. Por muito tempo utilizei exatamente essas ferramentas e só tive dor de cabeça. Perdia horas resolvendo problemas que não deveriam existir.

 

4 horas atrás, Anderson Modolon disse:

ou ter tudo instalado na máquina na forma "tradicional"?

Isso nunca. Não vale a pena. Dá dor de cabeça e amarra o desenvolvimento, além de gerar diferenças entre o servidor de produção, que facilmente resultam em problemas na aplicação.

 

Estude Docker. Esse carinha é o que você está procurando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também uso docker, as vezes é um pouco chato até voce pergar o jeito, entender o funcionamento, a inicialização dos processos, entrypoint, volumes e portas mas depois que pegar o jeito ja era... Tem um canal no youtube chamado linuxtips que é show, aprendi bastante lá e depois ate comprei o livro. Aqui uso apenas 1 container rodando ubuntu, apache2, php7.2 e mariadb-server 10.1. Funciona belezinha...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @MichellHenrique, tudo bem?

 

Em 03/08/2018 at 13:32, MichellHenrique disse:

Aqui uso apenas 1 container rodando ubuntu, apache2, php7.2 e mariadb-server 10.1

Pelo que eu entendi você está rodando apenas um container para o php/apache/banco, é isso?

Se sim, permita-me lhe fazer uma sugestão: o docker foi feito para atomizar as soluções.

 

Em outras palavras, o ideal seria você criar um container para cada responsabilidade. Dessa forma, se der problema no seu banco, por exemplo, o resto continua funcionando, lhe dando maior liberdade para configurar um banco extra temporário.

Mas isso é só um exemplo superficial, pois esse princípio confere mais segurança e melhor gerenciamento de recursos de máquina também, por exemplo.

 

No seu caso, você deveria subir:

- Um container para o PHP, com apache (ou outro webserver, de sua preferência). https://hub.docker.com/_/php/

- Um container para o mariadb. https://hub.docker.com/_/mariadb/

- (opcional, mas interessante) Adminer, para auxiliar no gerenciamento do banco: https://hub.docker.com/_/adminer/

- (opcional também, mas ajuda se você tiver mais de uma aplicação): um proxy reverso.

- Uma network (rede) para comunicação entre os containers.

- Volumes, conforme necessidade.

 

Você consegue orquestrar tudo isso com apenas um arquivo resumido de configuração usando o docker-compose, que é outro cara muito bacana de se estudar. Fica a sugestão :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, obrigado pelas dicas Matheus.

 

Com certeza o funcionamento ideal é por aí mesmo, principalmente quando se trata de escalabilidade

e produção com o compose, até mesmo o funcionamento do entrypoint direciona a isso, mas, no meu

caso, uso o docker mais para facilitar minha vida no desenvolvimento, particularmente não gosto de

rodar serviços alem do ssh na minha maquina física, ainda mais em ambientes públicos, então criei um

container com apache, php e mariadb pois isso facilita muito, só subir um container e pronto, já estou

apto para o desenvolvimento. Sei também que o ideal seria deixar o ambiente de desenvolvimento o

mais proximo possível do ambiente de produção mas aqui não faz muita diferença pois meu ambiente

de desenvolvimento é com arquitetura diferente do ambiente de produção, o que não ajuda muito...

 

Resumindo, no meu caso, criei uma imagem no docker hub com LAMP (linux, apache, mysql e php)

no qual basta 1 comando (docker run) e meu ambiente de desenvolvimento está pronto, no pc, no

notebook ou aonde for... Não é a forma mais sofisticada e escalável do mundo mas funciona bem.

 

Enfim cada caso é um caso e as vezes é desnecessário gastar muito tempo em uma solução que

vai além do que você realmente necessita, de qualquer forma, assim que possivel vou terminar de

ler esse livo sobre o docker, ainda não cheguei a me aprofundar na escalabilidade com compose,

kubernete, redes, balanceamento de cargas e etc pois minhas necessidade atuais me fizeram

mudar a leitura para outro livro.

 

De qualquer forma obrigado novamente pelas dicas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por antonio_milat
      Comecei a utilizar o Vagrant para desenvolvimento PHP, mas já é a segunda vez que quando inicio o servidor pelo comando 'vagrant up' a pasta em que estão meus projetos (/var/www/html) desaparece. Estou utilizando Ubuntu 14 e Laravel 5.2 neste servidor e antes de desligar o pc rodo o comando 'vagrant halt' para desligar o servidor.
      Alguém já passou por isso ou tem alguma ideia do que possa estar acontecendo?
       
      Obs: Já tentei a solução do link abaixo mas não funcionou.
      http://www.mateuspaduaweb.com.br/o-que-fazer-se-sua-instanciavm-do-vagrant-desaparecer-ou-travar/
    • Por PedroLazari
      Olá Pessoal, boa noite!
       
      Eu estou iniciando meus trabalhos com vagrant, no windows, infelizmente. 
       
      Eu configurei todo o vagrant, mas eu não sei como fazer aquela sincronização entre a minha pasta local e  a pasta do vagrant, alguem pode me ajudar com isso?
       
      Eu vi que tem como fazer criando um htdocs na mesma pasta onde eu faço o vagrant up, mas não deu certo. 
       
      Aproveitando o tópico, algum tutorial para fazer isso com Docker?
       
      Obrigado a todos que puderem ajudar!
    • Por sammuel
      Bom, sou novo no fórum e preciso da ajuda dos senhores para resolver um problema em um servidor que estou tentando implantar no meu trabalho, para melhorar o trâmite de documentação. Informo que não tenho quase nenhuma experiência com Linux.

      Mas na busca de melhorar o setor administrativo do meu setor de trabalho, encontrei este site:
      http://www.moredoc.com.pt/home
      O qual disponibiliza o download de um disco rígido virtual, no qual já vem pré configurada a instalação de um servidor para acessar o Sistema pelo navegador.

      Depois de muita tempo e tentativas, consegui deixar o servidor funcionando, inclusive com acesso a internet do meu PC hospedeiro.

      Tenho 02 problemas:

      1- O servidor simplesmente não abre mais no navegador. Já havia acontecido isso algumas vezes, então eu criava uma nova máquina virtual. No entanto, não dá de trabalhar assim, tendo que sempre iniciar do zero, reinstalando a máquina virtual. Dá última vez, depois de deixar o sistema prontinho, deu uma queda de energia, e quando voltei a ligar a máquina virtual, o servido novamente não funcionava mais. Não tenho noção de como resolver esse problema, alguém poderia ajudar-me?

      Link da imagem: http://i.imgur.com/mYAItnv.png

      O erro que aparece ao acessar o navegador é: Não foi possível estabelecer a ligação. O firefox não consegue estabelecer uma ligação para o servidor em localhost:8080

      2- Outro problema que tive, foi configurar a internet na máquina virtual, depois de tanto pesquisar, consegui. Consigo acessar o servidor pelo navegador da máquina hospedeira, no entanto, não consigo acessar o servido instalado na máquina virtual através dos demais computadores que estão na rede. O que eu devo fazer para acessar pelos demais computadores da rede?

      Se alguém tiver interesse, estou disposto a liberar meu PC para ser acessado virtualmente.
    • Por _hoffmann
      Fala pessoal, tudo tranquilo ? Estou tentenando configurar uma máquina virtual utilizando Vagrant e Virtualbox, consegui tranquilo instalar a Vm, o php, mysql, etc... Mais me veio umas dúvidas, tenho seguinte pasta compartilha:
       
      config.vm.synced_folder "C:/Projects/startup/www", "/var/www", id: "vagrant-root"
       
      A dúvida é, estou utilizando ZF2, os meus código e meu Framework teria que fica todos dentro da pasta "WWW" ?
       
       
       
       
       
    • Por Bruno Ferreira da Silva
      Estou usando VirtualBox + vagrant como para rodar o ambiente virtual para utilização do Laravel 5.1, e estou em aprendizado.
       
       
      O erro é quando executo o comando abaixo:
      php artisan migrate o erro é esse:
      [PDOException] SQLSTATE[HY000] [2006] MySQL server has gone away [ErrorException] PDO::__construct(): MySQL server has gone away to achando que o problema é no arquivo my.cnf
      no arquivo my.cnf:
      # # The MySQL database server configuration file. # # You can copy this to one of: # - "/etc/mysql/my.cnf" to set global options, # - "~/.my.cnf" to set user-specific options. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # This will be passed to all mysql clients # It has been reported that passwords should be enclosed with ticks/quotes # escpecially if they contain "#" chars... # Remember to edit /etc/mysql/debian.cnf when changing the socket location. [client] port = 3306 socket = /var/run/mysqld/mysqld.sock # Here is entries for some specific programs # The following values assume you have at least 32M ram # This was formally known as [safe_mysqld]. Both versions are currently parsed. [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] # # * Basic Settings # # # * IMPORTANT # If you make changes to these settings and your system uses apparmor, you may # also need to also adjust /etc/apparmor.d/usr.sbin.mysqld. # user = mysql socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp skip-external-locking # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 # # * Fine Tuning # key_buffer = 16M max_allowed_packet = 2M thread_stack = 192K thread_cache_size = 8 # This replaces the startup script and checks MyISAM tables if needed # the first time they are touched myisam-recover = BACKUP #max_connections = 100 #table_cache = 64 #thread_concurrency = 10 # # * Query Cache Configuration # query_cache_limit = 1M query_cache_size = 16M # # * Logging and Replication # # Both location gets rotated by the cronjob. # Be aware that this log type is a performance killer. # As of 5.1 you can enable the log at runtime! #general_log_file = /var/log/mysql/mysql.log #general_log = 1 log_error = /var/log/mysql/error.log # Here you can see queries with especially long duration #log_slow_queries = /var/log/mysql/mysql-slow.log #long_query_time = 2 #log-queries-not-using-indexes # # The following can be used as easy to replay backup logs or for replication. # note: if you are setting up a replication slave, see README.Debian about # other settings you may need to change. #server-id = 1 #log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M #binlog_do_db = include_database_name #binlog_ignore_db = include_database_name # # * InnoDB # # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. # Read the manual for more InnoDB related options. There are many! # # * Security Features # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". # # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 16M # # * IMPORTANT: Additional settings that can override those from this file! # The files must end with '.cnf', otherwise they'll be ignored. # !includedir /etc/mysql/conf.d/
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.