{"id":23868,"date":"2017-05-22T19:24:17","date_gmt":"2017-05-22T22:24:17","guid":{"rendered":"https:\/\/blog.locaweb.com.br\/?p=23868"},"modified":"2022-08-31T16:48:51","modified_gmt":"2022-08-31T19:48:51","slug":"docker-php-em-5-minutos","status":"publish","type":"post","link":"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/docker-php-em-5-minutos\/","title":{"rendered":"Docker + PHP em 5 minutos"},"content":{"rendered":"<p>J\u00e1 sabemos que o <b><i>Docker<\/i><\/b> \u00e9 uma m\u00e3o na roda para desenvolvimento, ainda mais hoje em dia. Com ele \u00e9 poss\u00edvel montar facilmente ambientes est\u00e1veis e com configura\u00e7\u00f5es id\u00eanticas. Se voc\u00ea ainda n\u00e3o utiliza o <i>Docker<\/i>, esse tutorial foi feito para voc\u00ea.<\/p>\n<p><b>Obs.:<\/b> Os comandos abaixo foram feitos usando o <i>Ubuntu 16.04<\/i>, cada <i>S.O.<\/i> tem uma forma diferente de instalar o <i>Docker<\/i>, por isso vou deixar os links da documenta\u00e7\u00e3o, caso voc\u00ea esteja usando um sistema diferente.<\/p>\n<p><b>\/\/ 1 &#8211; Instalando o Docker<\/b> (<a href=\"https:\/\/docs.docker.com\/engine\/installation\/#platform-support-matrix\">https:\/\/docs.docker.com\/engine\/installation\/#platform-support-matrix<\/a>)<\/p>\n<p>Abaixo est\u00e1 o passo a passo da instala\u00e7\u00e3o do <i>Docker<\/i>:<\/p>\n<ul>\n<li>Instalando pacotes (apt)<\/li>\n<\/ul>\n<pre class=\"brush: bash\">sudo apt-get install apt-transport-https ca-certificates curl software-properties-common<\/pre>\n<ul>\n<li>Adicionar chave oficial do<i> Docker<\/i><\/li>\n<\/ul>\n<pre class=\"brush: bash\">curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo apt-key add -<\/pre>\n<ul>\n<li>Setando reposit\u00f3rio<\/li>\n<\/ul>\n<pre class=\"brush: bash\">sudo add-apt-repository \"deb [arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu $(lsb_release -cs) stable\"<\/pre>\n<ul>\n<li>Atualizando reposit\u00f3rios<\/li>\n<\/ul>\n<pre class=\"brush: bash\">sudo apt-get update<\/pre>\n<ul>\n<li>Instalando <i>Docker<\/i><\/li>\n<\/ul>\n<pre class=\"brush: bash\">sudo apt-get install docker-ce<\/pre>\n<ul>\n<li>Verificando instala\u00e7\u00e3o<\/li>\n<\/ul>\n<pre class=\"brush: bash\">docker -v<\/pre>\n<p><b>\/\/ 2 &#8211; Instalando o Docker Compose<\/b><\/p>\n<p>(<a href=\"https:\/\/docs.docker.com\/compose\/install\/\">https:\/\/docs.docker.com\/compose\/install\/<\/a>)<\/p>\n<p>O <i>Docker Compose<\/i> \u00e9 respons\u00e1vel por criar e administrar um conjunto de containers. Abaixo os passos para a instala\u00e7\u00e3o do <i>Docker Compose<\/i>.<\/p>\n<ul>\n<li>Baixando o docker-compose<\/li>\n<\/ul>\n<pre class=\"brush: bash\">sudo curl -o \/usr\/local\/bin\/docker-compose -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/1.11.2\/docker-compose-$(uname -s)-$(uname -m)\"<\/pre>\n<ul>\n<li>Setando as permiss\u00f5es<\/li>\n<\/ul>\n<pre class=\"brush: bash\">sudo chmod +x \/usr\/local\/bin\/docker-compose<\/pre>\n<ul>\n<li>Verificado instala\u00e7\u00e3o<\/li>\n<\/ul>\n<pre class=\"brush: bash\">docker-compose -v<\/pre>\n<p><b>\/\/ 3 &#8211; Criando Dockerfile<\/b><\/p>\n<p>Depois de fazer os passos anteriores, o<i> Docke<\/i>r j\u00e1 est\u00e1 instalado e pronto para usar.<\/p>\n<p>Agora, neste tutorial, vou falar sobre como usar uma imagem<i> PHP<\/i>, mas saiba que existem imagens para tudo o que voc\u00ea possa imaginar, basta acessar o <a href=\"https:\/\/hub.docker.com\/\"><b><i>Docker Hub<\/i><\/b><\/a> e procurar.<\/p>\n<p>Em nosso tutorial vamos usar a imagem <a href=\"https:\/\/hub.docker.com\/r\/tutum\/lamp\/\">tutum\/lamp<\/a>.<\/p>\n<p>Para us\u00e1-la basta criar um arquivo na raiz do seu projeto com o nome de <b><i>Dockerfile<\/i><\/b>, o <i>Dockerfile<\/i> de seu projeto deve ficar como o exemplo abaixo:<\/p>\n<pre class=\"brush: bash\">FROM tutum\/lamp\nMAINTAINER PAAS EMAIL &lt;seuemail@provedor.com&gt;\n<\/pre>\n<p>Seu<i> Dockerfile<\/i> pode mudar, caso queira fazer algo diferente em sua imagem. Nesse exemplo estamos deixando o mais simples poss\u00edvel.<\/p>\n<p><b>\/\/ 4 &#8211; Criando docker-compose.yml<\/b><\/p>\n<p>Para utilizar o <i>Docker Compose <\/i>que instalamos, temos que criar mais um arquivo na raiz do projeto o docker-compose.yml e ele deve ficar como o exemplo abaixo:<\/p>\n<pre class=\"brush: bash\">dev:\n\n  dockerfile: Dockerfile\n  volumes:\n    - .:\/var\/www\/html\n    - \/etc\/timezone:\/etc\/timezone\n    - \/etc\/localtime:\/etc\/localtime\n\n  build: .\n  expose:\n    - \"80\"\n\n  ports:\n    - \"80:80\"\n<\/pre>\n<p>Caso tenha necessidade, assim como o <i>Dockerfile<\/i> voc\u00ea pode variar o docker-compose.yml, adicionando um container de<i> Redis <\/i>ao projeto, por exemplo.<\/p>\n<p><b>\/\/ 5 &#8211; Subindo aplica\u00e7\u00e3o<\/b><\/p>\n<ul>\n<li>Rodar a aplica\u00e7\u00e3o<\/li>\n<\/ul>\n<pre class=\"brush: bash\">docker-compose up<\/pre>\n<p>Feito isso, agora voc\u00ea j\u00e1 pode acessar seu localhost normalmente e acessar o app feito em <i>PHP<\/i> rodando no <i>Docker<\/i>. Caso voc\u00ea tenha o<i> Apache<\/i> ou o <i>Nginx <\/i>instalado e rodando, ou qualquer outro programa que utilize a porta 80 de sua m\u00e1quina, voc\u00ea ter\u00e1 que dar um stop nele antes de subir o <i>Docker<\/i>. Caso contr\u00e1rio, dar\u00e1 um erro no <i>Docker <\/i>e n\u00e3o ir\u00e1 subir enquanto a porta 80 estiver ocupada.<br \/>\nGostou da dica? Deixe um coment\u00e1rio.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J\u00e1 sabemos que o Docker \u00e9 uma m\u00e3o na roda para desenvolvimento, ainda mais hoje em dia. Com ele \u00e9 poss\u00edvel montar facilmente ambientes est\u00e1veis e com configura\u00e7\u00f5es id\u00eanticas. Se voc\u00ea ainda n\u00e3o utiliza o Docker, esse tutorial foi feito para voc\u00ea. Obs.: Os comandos abaixo foram feitos usando o Ubuntu 16.04, cada S.O. tem [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":27473,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-23868","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-aberto"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/23868","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/comments?post=23868"}],"version-history":[{"count":1,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/23868\/revisions"}],"predecessor-version":[{"id":36485,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/23868\/revisions\/36485"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media\/27473"}],"wp:attachment":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media?parent=23868"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/categories?post=23868"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/tags?post=23868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}