[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:09.14,0:00:13.28,Default,,0000,0000,0000,,Um dos passos mais importantes quando\Nnós falamos da utilização de Docker Dialogue: 0,0:00:13.28,0:00:16.95,Default,,0000,0000,0000,,é justamente aprender a criar\No nosso próprio Docker, Dialogue: 0,0:00:16.95,0:00:20.42,Default,,0000,0000,0000,,ou pelo menos a nossa\Nprópria imagem. Dialogue: 0,0:00:20.42,0:00:23.62,Default,,0000,0000,0000,,Para isso, nós vamos ter que utilizar\Nalgumas ferramentas. Dialogue: 0,0:00:23.62,0:00:29.90,Default,,0000,0000,0000,,A primeira e provavelmente mais importante\Nnesse processo vai ser o Dockerfile. Dialogue: 0,0:00:29.90,0:00:34.92,Default,,0000,0000,0000,,Ele é basicamente um arquivo que vai permitir\Nque eu passe instruções para o Docker Dialogue: 0,0:00:34.92,0:00:37.84,Default,,0000,0000,0000,,de como ele deve\Nconstruir aquela imagem. Dialogue: 0,0:00:37.84,0:00:41.71,Default,,0000,0000,0000,,Antes de mais nada, eu vou precisar\Npelo menos de algum código Dialogue: 0,0:00:41.71,0:00:45.38,Default,,0000,0000,0000,,para que eu consiga colocar\Nem desenvolvimento. Dialogue: 0,0:00:45.38,0:00:51.24,Default,,0000,0000,0000,,Para isso, eu peguei um códigozinho bem\Nsimples de "hello, world" baseado em Node, Dialogue: 0,0:00:51.24,0:00:55.39,Default,,0000,0000,0000,,é basicamente uma página que tem\Num campinho de preenchimento de busca Dialogue: 0,0:00:55.39,0:00:59.46,Default,,0000,0000,0000,,e um botãozinho, mas essa função\Nnão tem nada programado, Dialogue: 0,0:00:59.46,0:01:02.63,Default,,0000,0000,0000,,é realmente só para nós\Ntermos um código para utilizar. Dialogue: 0,0:01:02.63,0:01:06.60,Default,,0000,0000,0000,,Nesse caso, nós vamos\Nutilizar um código em Node Dialogue: 0,0:01:06.60,0:01:11.54,Default,,0000,0000,0000,,e, justamente por isso, eu preciso utilizar,\Ncomo base para a minha imagem, Dialogue: 0,0:01:11.54,0:01:15.54,Default,,0000,0000,0000,,uma imagem que já tenha um Node\Npronto para eu poder utilizar. Dialogue: 0,0:01:15.54,0:01:18.34,Default,,0000,0000,0000,,Caso nós não achemos\Numa imagem dessa forma, Dialogue: 0,0:01:18.34,0:01:21.59,Default,,0000,0000,0000,,nós podemos passar comandos\Ndentro de um container Dialogue: 0,0:01:21.59,0:01:25.98,Default,,0000,0000,0000,,para que ele faça todo o processo\Nde instalação daquele software Dialogue: 0,0:01:25.98,0:01:29.59,Default,,0000,0000,0000,,e disponibilize todo aquele\Nambiente montado para nós. Dialogue: 0,0:01:29.59,0:01:34.33,Default,,0000,0000,0000,,Aqui dentro da minha tela, eu vou ter,\Nentão, uma pasta chamada "app", Dialogue: 0,0:01:34.33,0:01:39.71,Default,,0000,0000,0000,,que eu criei dentro do meu desktop,\Ne nela eu vou ter alguns arquivos. Dialogue: 0,0:01:40.80,0:01:46.77,Default,,0000,0000,0000,,O "yarn.lock", o "package",\Na pasta "src" e a pasta "spec" Dialogue: 0,0:01:46.77,0:01:51.24,Default,,0000,0000,0000,,são justamente conteúdos que eu\Ntenho dessa minha aplicação. Dialogue: 0,0:01:51.24,0:01:56.45,Default,,0000,0000,0000,,Se eu abro, por exemplo aqui o "src",\Neu vou ter um "index.js", Dialogue: 0,0:01:56.45,0:02:00.96,Default,,0000,0000,0000,,que vai ser, justamente, o arquivo\Ninicial da minha aplicação. Dialogue: 0,0:02:02.42,0:02:06.29,Default,,0000,0000,0000,,Aqui nessa pasta, eu ainda tenho\No arquivo chamado Dockerfile. Dialogue: 0,0:02:06.29,0:02:09.36,Default,,0000,0000,0000,,Esse é o arquivo que vai\Ntrazer todas as instruções Dialogue: 0,0:02:09.36,0:02:12.84,Default,,0000,0000,0000,,que o Docker precisa\Npara construir a nossa imagem. Dialogue: 0,0:02:13.47,0:02:16.10,Default,,0000,0000,0000,,Existem algumas características\Nmuito importantes Dialogue: 0,0:02:16.10,0:02:18.17,Default,,0000,0000,0000,,que nós temos\Nque nos atentar nele, Dialogue: 0,0:02:18.17,0:02:23.29,Default,,0000,0000,0000,,a primeira delas é que esse\Narquivo não tem extensão, Dialogue: 0,0:02:24.24,0:02:27.74,Default,,0000,0000,0000,,a segunda é que ele sempre\Nvai começar com D maiúsculo Dialogue: 0,0:02:27.74,0:02:31.02,Default,,0000,0000,0000,,e Dockerfile vai estar\Nescrito tudo junto. Dialogue: 0,0:02:31.02,0:02:34.62,Default,,0000,0000,0000,,Eu preciso justamente prestar\Natenção em todos esses padrões Dialogue: 0,0:02:34.62,0:02:37.60,Default,,0000,0000,0000,,para que eu não impeça\No Docker de achar o arquivo Dialogue: 0,0:02:37.60,0:02:40.29,Default,,0000,0000,0000,,e, assim, começar o processo\Nde build da imagem. Dialogue: 0,0:02:40.29,0:02:45.43,Default,,0000,0000,0000,,Agora, como que eu valido isso\Naqui dentro dos meus arquivos? Dialogue: 0,0:02:45.43,0:02:49.77,Default,,0000,0000,0000,,Basta eu vir na aba de visualização\Ndo Explorer no Windows Dialogue: 0,0:02:49.77,0:02:56.21,Default,,0000,0000,0000,,e marcar a opção "file name extensions"\Nou mostrar extensões de arquivo. Dialogue: 0,0:02:56.21,0:03:00.21,Default,,0000,0000,0000,,Note que agora todos os meus\Narquivos ganharam uma extensão, Dialogue: 0,0:03:00.21,0:03:02.35,Default,,0000,0000,0000,,menos no dockerfile. Dialogue: 0,0:03:02.35,0:03:07.29,Default,,0000,0000,0000,,Pode ser que quando você criou o arquivo\Nutilizando, por exemplo, o bloco de notas, Dialogue: 0,0:03:07.29,0:03:11.99,Default,,0000,0000,0000,,ele tivesse mostrado\Numa opção como txt. Dialogue: 0,0:03:11.99,0:03:16.34,Default,,0000,0000,0000,,Caso ele tenha aparecido como txt\Nno final, basta apertar a tecla F2 Dialogue: 0,0:03:16.34,0:03:22.90,Default,,0000,0000,0000,,e renomear o arquivo excluindo ".txt"\Ne deixando apenas "dockerfile". Dialogue: 0,0:03:22.90,0:03:27.22,Default,,0000,0000,0000,,O Windows vai pedir que você confirme\Nque aquele arquivo não vai ter uma extensão, Dialogue: 0,0:03:27.22,0:03:30.94,Default,,0000,0000,0000,,basta confirmar e seguir\Npara as próximas etapas. Dialogue: 0,0:03:30.94,0:03:34.38,Default,,0000,0000,0000,,Quando nós abrimos o Dockerfile\Ndentro de um bloco de notas, Dialogue: 0,0:03:34.38,0:03:36.95,Default,,0000,0000,0000,,nós vamos ter uma estrutura\Naté bem simples. Dialogue: 0,0:03:36.95,0:03:41.19,Default,,0000,0000,0000,,A primeira coisa que nós vamos\Nver é justamente um comentário Dialogue: 0,0:03:41.19,0:03:46.66,Default,,0000,0000,0000,,definindo qual tipo de sintaxe nós estamos\Nutilizando para construção desse arquivo. Dialogue: 0,0:03:46.66,0:03:49.56,Default,,0000,0000,0000,,Nesse caso, uma sintaxe de versão 1. Dialogue: 0,0:03:49.56,0:03:54.70,Default,,0000,0000,0000,,As linhas de comando que definem a sintaxe\Nestão lá na documentação do Docker. Dialogue: 0,0:03:54.70,0:03:58.84,Default,,0000,0000,0000,,Por hora, você pode simplesmente copiar\Nessa linha para todos os seus arquivos Dialogue: 0,0:03:58.84,0:04:02.61,Default,,0000,0000,0000,,e tudo vai correr sem\Nmaiores problemas. Dialogue: 0,0:04:02.61,0:04:06.18,Default,,0000,0000,0000,,Agora, caso você se torne\Num usuário avançado de Docker, Dialogue: 0,0:04:06.18,0:04:12.25,Default,,0000,0000,0000,,algumas funções só vão estar disponíveis\Nem versões específicas do Dockerfile, Dialogue: 0,0:04:12.25,0:04:17.09,Default,,0000,0000,0000,,então você vai ter que ficar atento\Na qual tipo de Dockerfile utilizar Dialogue: 0,0:04:17.09,0:04:21.56,Default,,0000,0000,0000,,para poder criar exatamente\No container da forma que você precisa. Dialogue: 0,0:04:21.56,0:04:25.53,Default,,0000,0000,0000,,Logo em seguida, eu tenho\Num comando chamado "FROM". Dialogue: 0,0:04:25.53,0:04:31.37,Default,,0000,0000,0000,,Esse comando serve para eu especificar\Nqual imagem de base que eu vou utilizar. Dialogue: 0,0:04:31.37,0:04:37.38,Default,,0000,0000,0000,,Nesse caso, uma imagem chamada\N"node" na versão "12-alpine". Dialogue: 0,0:04:37.38,0:04:42.50,Default,,0000,0000,0000,,É justamente aqui, por exemplo, que caso eu\Nqueira criar um container totalmente do zero Dialogue: 0,0:04:42.50,0:04:45.75,Default,,0000,0000,0000,,utilizando só um sistema\Noperacional de base, Dialogue: 0,0:04:45.75,0:04:49.62,Default,,0000,0000,0000,,eu vou conseguir especificar que eu\Nquero esse sistema operacional. Dialogue: 0,0:04:49.62,0:04:53.19,Default,,0000,0000,0000,,Se eu quisesse, por exemplo,\Ncriar um servidor Apache do zero, Dialogue: 0,0:04:53.19,0:04:58.24,Default,,0000,0000,0000,,eu poderia fazer um FROM Ubuntu\Ne, nos comandos que se seguem, Dialogue: 0,0:04:58.24,0:05:02.37,Default,,0000,0000,0000,,fazer todo o passo a passo\Nde instalação do Apache. Dialogue: 0,0:05:02.37,0:05:08.35,Default,,0000,0000,0000,,Nesse caso, nós já estamos reaproveitando\Nparte da estrutura do Node que já está pronta Dialogue: 0,0:05:08.35,0:05:11.41,Default,,0000,0000,0000,,e, aí, eu só preciso rodar\Nalguns poucos comandos Dialogue: 0,0:05:11.41,0:05:14.58,Default,,0000,0000,0000,,e copiar os meus arquivos\Npara dentro do container. Dialogue: 0,0:05:14.58,0:05:19.09,Default,,0000,0000,0000,,Nosso próximo passo, então,\Né rodar um "apk add" Dialogue: 0,0:05:19.09,0:05:24.74,Default,,0000,0000,0000,,para garantir que eu tenho\Num python2, o compilador C Dialogue: 0,0:05:24.74,0:05:27.27,Default,,0000,0000,0000,,e o make dentro\Nda minha máquina. Dialogue: 0,0:05:27.93,0:05:33.63,Default,,0000,0000,0000,,Nosso próximo passo, então, vai\Nser criar um diretório de trabalho, Dialogue: 0,0:05:33.63,0:05:36.00,Default,,0000,0000,0000,,nesse caso, chamado "app". Dialogue: 0,0:05:36.00,0:05:40.41,Default,,0000,0000,0000,,Esse diretório de trabalho vai\Nbasicamente informar para o container Dialogue: 0,0:05:40.41,0:05:43.41,Default,,0000,0000,0000,,qual pasta ele deve utilizar\Npara poder trabalhar. Dialogue: 0,0:05:43.41,0:05:49.38,Default,,0000,0000,0000,,Note que todo o nosso conteúdo do arquivo\Nestá dentro de uma pasta chamada "app", Dialogue: 0,0:05:49.38,0:05:52.78,Default,,0000,0000,0000,,dessa forma, eu vou conseguir\Nnavegar para dentro dessa pasta, Dialogue: 0,0:05:52.78,0:05:55.13,Default,,0000,0000,0000,,utilizar ela como pasta padrão Dialogue: 0,0:05:55.13,0:05:58.82,Default,,0000,0000,0000,,e, a partir de então, começar\Na executar os demais comandos. Dialogue: 0,0:05:58.82,0:06:04.60,Default,,0000,0000,0000,,O comando "COPY" serve justamente para eu\Ncopiar arquivos para dentro do container. Dialogue: 0,0:06:04.60,0:06:09.17,Default,,0000,0000,0000,,Ele vai copiar todos os arquivos\Nda pasta que eu me encontro, Dialogue: 0,0:06:09.17,0:06:14.81,Default,,0000,0000,0000,,por isso o ponto, para a pasta que eu\Nestarei utilizando dentro do container, Dialogue: 0,0:06:14.81,0:06:17.49,Default,,0000,0000,0000,,por isso, eu vou utilizar\N"." novamente. Dialogue: 0,0:06:17.49,0:06:20.01,Default,,0000,0000,0000,,E aqui vai vir um ponto\Nbem interessante: Dialogue: 0,0:06:20.01,0:06:23.23,Default,,0000,0000,0000,,a cópia do arquivo não é\Nexatamente uma boa prática, Dialogue: 0,0:06:23.23,0:06:29.30,Default,,0000,0000,0000,,como nós vimos, se nós não soubermos utilizar\No armazenamento de arquivos de forma correta, Dialogue: 0,0:06:29.30,0:06:32.92,Default,,0000,0000,0000,,isso vai atrapalhar o bom\Nfuncionamento de um container. Dialogue: 0,0:06:32.92,0:06:37.60,Default,,0000,0000,0000,,A questão, nesse caso, é que, como eu\Nestou criando um container novo, Dialogue: 0,0:06:37.60,0:06:42.40,Default,,0000,0000,0000,,eu preciso passar todos os códigos\Nque vão servir de base para ele, Dialogue: 0,0:06:42.40,0:06:47.14,Default,,0000,0000,0000,,então eu posso copiar esses arquivos\Nsem a menor dor de cabeça, Dialogue: 0,0:06:47.14,0:06:50.68,Default,,0000,0000,0000,,já que eles vão passar\Na ser parte fundamental Dialogue: 0,0:06:50.68,0:06:52.64,Default,,0000,0000,0000,,de todo o container\Nque eu estou criando. Dialogue: 0,0:06:52.64,0:06:54.25,Default,,0000,0000,0000,,O passo seguinte, então, Dialogue: 0,0:06:54.25,0:07:00.72,Default,,0000,0000,0000,,é garantir que esse meu sistema esteja\Nutilizando um ambiente de produção. Dialogue: 0,0:07:00.72,0:07:03.46,Default,,0000,0000,0000,,Para isso, eu posso\Nexecutar um "yarn install". Dialogue: 0,0:07:03.46,0:07:06.66,Default,,0000,0000,0000,,Esse comando é um comando\Nque pertence ao ambiente Node Dialogue: 0,0:07:06.66,0:07:10.43,Default,,0000,0000,0000,,e serve basicamente para instalar\Ntodos os pacotes necessários Dialogue: 0,0:07:10.43,0:07:13.77,Default,,0000,0000,0000,,e preparar o ambiente para a execução\Ndaquela minha aplicação. Dialogue: 0,0:07:13.77,0:07:17.44,Default,,0000,0000,0000,,Em seguida, eu vou utilizar o C MD, Dialogue: 0,0:07:17.50,0:07:20.21,Default,,0000,0000,0000,,que é basicamente uma forma de criar Dialogue: 0,0:07:20.21,0:07:23.04,Default,,0000,0000,0000,,linhas de comando dentro do container. Dialogue: 0,0:07:23.04,0:07:27.45,Default,,0000,0000,0000,,Nesse caso, eu estou chamando o comando\Nnode e informando para ele Dialogue: 0,0:07:27.45,0:07:34.19,Default,,0000,0000,0000,,que o arquivo de origem da minha aplicação\Nestá dentro da pasta SCR Dialogue: 0,0:07:34.29,0:07:35.02,Default,,0000,0000,0000,,index. Dialogue: 0,0:07:35.02,0:07:38.66,Default,,0000,0000,0000,,E esse é exatamente\No caminho que a gente checou agora a pouco Dialogue: 0,0:07:38.79,0:07:41.76,Default,,0000,0000,0000,,de onde estava o index da minha aplicação. Dialogue: 0,0:07:41.76,0:07:45.70,Default,,0000,0000,0000,,Então, a partir do momento que eu copiei\Nesses dados para dentro do container, Dialogue: 0,0:07:45.76,0:07:48.70,Default,,0000,0000,0000,,eu agora mostrei para o novo de\Ncomo executá lo. Dialogue: 0,0:07:48.70,0:07:52.87,Default,,0000,0000,0000,,Por fim, eu estou fazendo um ex\Npouso da porta 3000. Dialogue: 0,0:07:53.10,0:07:56.11,Default,,0000,0000,0000,,Esse comando serve justamente\Npara eu informar Dialogue: 0,0:07:56.31,0:08:00.31,Default,,0000,0000,0000,,que eu vou ter que acessar\Numa porta desse conta e dessa forma, Dialogue: 0,0:08:00.31,0:08:05.32,Default,,0000,0000,0000,,na hora que eu for criar o container para\Ncolocá lo em execução, o Docker vai saber Dialogue: 0,0:08:05.32,0:08:10.19,Default,,0000,0000,0000,,que eu posso ter uma conexão de rede ali\Ne vai permitir a criação dessa interação. Dialogue: 0,0:08:10.29,0:08:15.23,Default,,0000,0000,0000,,Outro detalhe muito importante é que\Neu tenho duas formas de executar comandos. Dialogue: 0,0:08:15.33,0:08:18.86,Default,,0000,0000,0000,,O primeiro é a partir do comando run. Dialogue: 0,0:08:18.93,0:08:22.00,Default,,0000,0000,0000,,O run vai simplesmente executar\Naquela linha Dialogue: 0,0:08:22.00,0:08:25.00,Default,,0000,0000,0000,,de comando dentro do meu container. Dialogue: 0,0:08:25.00,0:08:28.74,Default,,0000,0000,0000,,Na hora que eu estiver fazendo\Ntoda a parte de construção dele. Dialogue: 0,0:08:28.88,0:08:32.94,Default,,0000,0000,0000,,Enquanto isso, sem MD,\Nvão ser comandos que vão ser executados Dialogue: 0,0:08:33.01,0:08:35.52,Default,,0000,0000,0000,,posteriores à criação do meu container. Dialogue: 0,0:08:35.52,0:08:37.52,Default,,0000,0000,0000,,Dessa forma, quando eu crio lá o C. Dialogue: 0,0:08:37.52,0:08:41.42,Default,,0000,0000,0000,,MD chamando um comando novo\Ne passando o index, Dialogue: 0,0:08:41.52,0:08:46.69,Default,,0000,0000,0000,,toda vez que esse container for colocado\Nem execução, esse comando vai ser chamado. Dialogue: 0,0:08:46.76,0:08:49.76,Default,,0000,0000,0000,,Agora que todo esse processo\Nestá finalizado, Dialogue: 0,0:08:49.100,0:08:52.70,Default,,0000,0000,0000,,eu posso utilizar esses arquivos Dialogue: 0,0:08:52.70,0:08:56.94,Default,,0000,0000,0000,,para construir o meu container,\Nutilizando então o prompt de comando. Dialogue: 0,0:08:57.00,0:09:01.31,Default,,0000,0000,0000,,Eu vou poder recorrer a uma função chamada Dialogue: 0,0:09:01.41,0:09:02.98,Default,,0000,0000,0000,,Docker build. Dialogue: 0,0:09:02.98,0:09:06.85,Default,,0000,0000,0000,,Esse comando é um comando bem simples\Ne não tem muita coisa que a gente deve Dialogue: 0,0:09:06.85,0:09:08.28,Default,,0000,0000,0000,,configurar nele. Dialogue: 0,0:09:08.28,0:09:12.78,Default,,0000,0000,0000,,Nesse caso, por exemplo,\Na gente só vai nomear a imagem Dialogue: 0,0:09:12.85,0:09:16.72,Default,,0000,0000,0000,,e em seguida informar o endereço\Ndo Dockerfile que vai ser utilizado. Dialogue: 0,0:09:16.79,0:09:20.46,Default,,0000,0000,0000,,Para isso\Neu vou informar o menos ter seguido Dialogue: 0,0:09:20.46,0:09:23.46,Default,,0000,0000,0000,,do nome da imagem, Dialogue: 0,0:09:23.63,0:09:26.40,Default,,0000,0000,0000,,nesse caso vou chamar ela de Olá Dialogue: 0,0:09:26.40,0:09:29.27,Default,,0000,0000,0000,,e em seguida eu vou informar um ponto. Dialogue: 0,0:09:29.27,0:09:34.11,Default,,0000,0000,0000,,A função desse ponto\Né para informar que eu já estou na pasta Dialogue: 0,0:09:34.17,0:09:37.71,Default,,0000,0000,0000,,aonde eu tenho o Dockerfile,\Ncaso não esteja nessa pasta, Dialogue: 0,0:09:37.78,0:09:43.55,Default,,0000,0000,0000,,ao invés de informar o ponto eu vou ter\Nque informar todo o endereçamento de pasta Dialogue: 0,0:09:43.65,0:09:48.09,Default,,0000,0000,0000,,e esse endereçamento\Nvai variar entre sistemas operacionais. Dialogue: 0,0:09:48.15,0:09:51.86,Default,,0000,0000,0000,,A forma mais fácil\Nentão é utilizar os comandos de navegação Dialogue: 0,0:09:51.86,0:09:56.33,Default,,0000,0000,0000,,de terminal como CD\Npara poder navegar pelos diretórios Dialogue: 0,0:09:56.43,0:09:59.36,Default,,0000,0000,0000,,e chegando no diretório\Nque tem o Dockerfile Dialogue: 0,0:09:59.36,0:10:03.80,Default,,0000,0000,0000,,ou simplesmente executar o Docker build\Ncom o ponto no final. Dialogue: 0,0:10:03.90,0:10:06.77,Default,,0000,0000,0000,,Executando então o processo de build, Dialogue: 0,0:10:06.77,0:10:08.98,Default,,0000,0000,0000,,várias coisas vão ser executadas. Dialogue: 0,0:10:08.98,0:10:12.34,Default,,0000,0000,0000,,A primeira delas\Né todo download de imagens, Dialogue: 0,0:10:12.44,0:10:15.75,Default,,0000,0000,0000,,seguido da construção das aplicações Dialogue: 0,0:10:15.82,0:10:19.55,Default,,0000,0000,0000,,e todo o teste de funcionamento\Npara ver se o comando inicial Dialogue: 0,0:10:19.55,0:10:21.25,Default,,0000,0000,0000,,vai ser executado com sucesso. Dialogue: 0,0:10:21.25,0:10:24.26,Default,,0000,0000,0000,,Caso você\Npossua alguma falha nesse processo, Dialogue: 0,0:10:24.42,0:10:27.89,Default,,0000,0000,0000,,você pode recorrer ao Docker Logs. Dialogue: 0,0:10:27.96,0:10:31.93,Default,,0000,0000,0000,,Esse é um comando que permite a gente\Nchecar logo o ambiente Docker. Dialogue: 0,0:10:32.03,0:10:35.64,Default,,0000,0000,0000,,Inclusive é legal que você pode utilizar\Nele para checar logs Dialogue: 0,0:10:35.64,0:10:40.51,Default,,0000,0000,0000,,individualmente de cada contêiner\Ncom o processo de build concluído. Dialogue: 0,0:10:40.57,0:10:45.31,Default,,0000,0000,0000,,O Docker sempre vai perguntar se você não\Nquer fazer um scan de vulnerabilidades. Dialogue: 0,0:10:45.41,0:10:47.88,Default,,0000,0000,0000,,Nesse caso, não vai ser preciso. Dialogue: 0,0:10:47.88,0:10:50.08,Default,,0000,0000,0000,,A única coisa que nos falta agora Dialogue: 0,0:10:50.08,0:10:52.88,Default,,0000,0000,0000,,é colocar justamente\Nesse container em execução. Dialogue: 0,0:10:52.88,0:10:56.22,Default,,0000,0000,0000,,Para isso a gente vai recorrer ao comando\Ndocker run. Dialogue: 0,0:10:56.29,0:11:00.26,Default,,0000,0000,0000,,Só que dessa vez eu vou ter que passar\Nalguns parâmetros de execução para ele. Dialogue: 0,0:11:00.46,0:11:03.40,Default,,0000,0000,0000,,O primeiro parâmetro vai ser justamente\Npara garantir Dialogue: 0,0:11:03.40,0:11:07.03,Default,,0000,0000,0000,,que essa imagem vai ficar em execução\No tempo todo. Dialogue: 0,0:11:07.13,0:11:09.77,Default,,0000,0000,0000,,Para isso, vou utilizar ao menos o D, Dialogue: 0,0:11:09.77,0:11:12.77,Default,,0000,0000,0000,,enquanto o segundo parâmetro menos p, Dialogue: 0,0:11:12.77,0:11:17.38,Default,,0000,0000,0000,,vai ser para informar o apontamento de\Nportas de rede. Dialogue: 0,0:11:17.44,0:11:20.05,Default,,0000,0000,0000,,Dessa forma,\Ntodo o conteúdo da minha aplicação Dialogue: 0,0:11:20.05,0:11:23.45,Default,,0000,0000,0000,,vai ficar disponível\Npara acesso para executar então Dialogue: 0,0:11:23.55,0:11:28.92,Default,,0000,0000,0000,,o container que a gente acabou de criar,\Neu vou fazer um Docker run Dialogue: 0,0:11:29.02,0:11:33.32,Default,,0000,0000,0000,,em menos de Dialogue: 0,0:11:33.39,0:11:36.40,Default,,0000,0000,0000,,menos P para informar a porta Dialogue: 0,0:11:36.43,0:11:39.76,Default,,0000,0000,0000,,e nesse caso eu expus a porta 3000. Dialogue: 0,0:11:39.86,0:11:44.24,Default,,0000,0000,0000,,Então vou utilizar 3002 pontos, 3000. Dialogue: 0,0:11:44.34,0:11:46.44,Default,,0000,0000,0000,,A razão de eu ter que repetir O31000 Dialogue: 0,0:11:46.44,0:11:50.14,Default,,0000,0000,0000,,duas vezes\Né porque eu estou falando de duas portas. Dialogue: 0,0:11:50.21,0:11:53.45,Default,,0000,0000,0000,,A primeira é a porta na minha máquina base Dialogue: 0,0:11:53.55,0:11:58.48,Default,,0000,0000,0000,,e a segunda é a porta do meu container,\Nque específico por exemplo, Dialogue: 0,0:11:58.48,0:12:02.19,Default,,0000,0000,0000,,a primeira porta,\Nque é a da máquina base, como 80. Dialogue: 0,0:12:02.25,0:12:04.79,Default,,0000,0000,0000,,Ela vai apontar um acesso Dialogue: 0,0:12:04.79,0:12:07.99,Default,,0000,0000,0000,,realizado na porta 80 do meu servidor base Dialogue: 0,0:12:08.09,0:12:12.13,Default,,0000,0000,0000,,para a porta 3000 do meu container. Dialogue: 0,0:12:12.20,0:12:15.20,Default,,0000,0000,0000,,Isso é algo que a gente tem que prestar\Nbastante atenção. Dialogue: 0,0:12:15.43,0:12:17.70,Default,,0000,0000,0000,,Às vezes,\Nquando a gente vai criar uma aplicação, Dialogue: 0,0:12:17.70,0:12:22.14,Default,,0000,0000,0000,,a gente tem vários containers\Nque tem expostas a porta 80 Dialogue: 0,0:12:22.37,0:12:26.91,Default,,0000,0000,0000,,e eu posso apontar diversas portas\Npara dentro desses containers, Dialogue: 0,0:12:26.98,0:12:30.68,Default,,0000,0000,0000,,utilizando numerações diferentes\Nno meu rosto base. Dialogue: 0,0:12:30.78,0:12:37.12,Default,,0000,0000,0000,,O próximo passo então é informar o nome da\Nminha imagem, nesse caso o LA Dialogue: 0,0:12:37.19,0:12:39.09,Default,,0000,0000,0000,,colocando a imagem em execução Dialogue: 0,0:12:39.09,0:12:42.26,Default,,0000,0000,0000,,eu vou receber o código de validação dela Dialogue: 0,0:12:42.36,0:12:45.33,Default,,0000,0000,0000,,e se eu executar um Docker PRS? Dialogue: 0,0:12:45.36,0:12:49.07,Default,,0000,0000,0000,,Note que essa minha imagem\Njá se encontra em execução Dialogue: 0,0:12:49.17,0:12:53.37,Default,,0000,0000,0000,,e me informando que a porta 3000\Nestá apontando para a porta Dialogue: 0,0:12:53.37,0:12:55.74,Default,,0000,0000,0000,,3000 do contêiner. Dialogue: 0,0:12:55.74,0:12:59.31,Default,,0000,0000,0000,,O último passo\Nentão, é abrir o navegador web Dialogue: 0,0:12:59.38,0:13:03.98,Default,,0000,0000,0000,,e acessar\Njustamente a nossa máquina na porta 3000. Dialogue: 0,0:13:04.08,0:13:07.09,Default,,0000,0000,0000,,O IP que eu informei aqui 127,0 Dialogue: 0,0:13:07.09,0:13:10.99,Default,,0000,0000,0000,,ponto zero\Nponto um é o que se chama de local Rust. Dialogue: 0,0:13:11.06,0:13:13.76,Default,,0000,0000,0000,,Ele representa a própria máquina na rede. Dialogue: 0,0:13:13.76,0:13:19.73,Default,,0000,0000,0000,,Outra forma que você teria era escrever\Npor extenso local rows de 2,3000. Dialogue: 0,0:13:19.83,0:13:21.47,Default,,0000,0000,0000,,Qualquer uma das duas formas Dialogue: 0,0:13:21.47,0:13:25.30,Default,,0000,0000,0000,,já faria com que toda a interface\Nfuncionasse normalmente. Dialogue: 0,0:13:25.40,0:13:28.41,Default,,0000,0000,0000,,No nosso caso, após acessar a aplicação, Dialogue: 0,0:13:28.51,0:13:33.24,Default,,0000,0000,0000,,todo o código que a gente criou e compilou\Njá está aqui disponível para uso Dialogue: 0,0:13:33.31,0:13:39.65,Default,,0000,0000,0000,,e eu consigo, por exemplo, ir adicionando\Nitens dentro dessa minha aplicação. Dialogue: 0,0:13:39.85,0:13:42.69,Default,,0000,0000,0000,,Esse é um exemplo de uma aplicação\Nbem simples, Dialogue: 0,0:13:42.69,0:13:47.29,Default,,0000,0000,0000,,só pra gente entender como é que eu começo\Na construir todo esse ambiente. Dialogue: 0,0:13:47.36,0:13:50.60,Default,,0000,0000,0000,,A partir de agora,\Nvocê pode utilizar esses conhecimentos Dialogue: 0,0:13:50.70,0:13:54.20,Default,,0000,0000,0000,,para começar a renderizar\Nas suas próprias aplicações Dialogue: 0,0:13:54.30,0:13:58.30,Default,,0000,0000,0000,,e com isso entender um pouco mais\Nde como todo esse ecossistema funciona.