Cellcms (11 частью серии)
CMS CMS — Utilizando Docker Пара Кребер контейнеров
фото Джонас Смит на Бессмысленно
Нет último Post Фаламос Собрей Geração de logs утилизандо О. Serilog E O Applicationsights PARA Termos UM Bonormentalo Robusto, COM Métricas de Performance E ERROS! Нет поста de hoije vamos permitir que nossa api seja executada em Им Контейнер Através делают Докер Действительно ALÉM DISSO VAMOS DAR UMA OLHADA EM COMO O Visual Studio 2019 ВЕРНО INTEGRACHãO, DURANTE O DESENVOLLEMATEO, COM ОС CORES EXPUTADOS PELO Docker Desktop.
Операционные системы Отрасли Para o Código de Hoije Serão 2: функция/Dockerfile E функция/Docker-Compose.
O que são контейнеры e o qual recomea eles resolvem
Mas Na Minha Máquina Funciona! — Vários desenvolventores, около примерно.
Quem Nunca, EM ALGUM PONTO, NãO SOLTOU A Exceramação Acima? QUANDO ESTAMOS DESENVOLVENDO COUTUMAMOS ESTAR NO «MELHOR AMBIENTE». Тодас как зависимость Estão Instaladas (E Normormente Ataualizadas), Temos Todas As addas acesso admentivo de debug e temos acesso adminivedivo ao sistema.
EIS que Chega a Hora de Puredar Applação e … Não Dá Certo. É erro Aqui, erro Ali, Configuração Faltante E Assim Vai. ISSO PRA NãO FALAMMOS DE SHELLAS DE REDE, QUE FICAM MAIS PARA O LADO DO PESSOAL DE OPERAçõES, NOWNMENMENTE.
Com a chegada de maior poder вычислительный actçamos utilizar Máquinas virtuais Para Executar Nossos Sistemas de Maneira Mais Isolada. COM MáKINAS VIRTUAIS AINDA TEMOS TODO O TRABALHO DE MANTER UM Sistema Terabure E Configura-Lo, Mas Temos Ems IsolyAdayo Melhor DAS Зависимость.
NAS облака/VPS Temos Essa Opção Que Normollemente Acaba Sendo Chamada de Iaas ( Инфраструктура как сервис ), Pasinentice Essim:
«Aqui Está Uma Máquina Virtual Com X Plachentame, Y Ram E Z Хранение. Gente Garante Que ELA FICA No AR 99.99999% DO TEMPO MAS VOCê FICA RESSALLEVEL POR Instalar Ofdencias, Configurar E Апликар Атуализасиçс. «
Porém ainda temos umblea. УСАР УМА ВМ , Завершить, Ainda Recere Muita Manutenção E Configuração Esperialmente SE NOSSO FOCO для Agilidade. EIS que Surgem o Conceito de Паас ( платформа как услуга ). Pasinemente Nesse Modelo SEU Fornecedor de Cloud/VPS SE Encarrega de Atualizar, Manter E Configurar O Ambiente Onde Seu Sistema Será Executado. Picaseamente é assim:
«Aqui Estám umbiente baseado em linux, com nginx instalado e com limites de x y z. Gente Garante que Estará Semper Atualizado E Ficará No AR 99.99999999% Tempo MAS VOCê Ficará Repestyável Por Copar Sua Applicação E Как конфигурация.
O pulo do gato Aqui é aque agora Essa Plataforma Não Обучение Обучение é dedicada a você Отказ NãA INTRAREI EM DECALLESS MAS NESTE MODEO MAS, ATRAVÉS de Configurações do Sistema Base E DA Máquina Virtual, O Fornecedor Pode Dedicar Cotas de Performance Difeerentes Appleações Diferentes E Segregar O Que Está Instalado Para Cada Appleação. ISSO Puries UM Custo Mais Baixo Para o Fornecedor E Para Vovê Clients!
E Então Temos, Recastemente, Parolização Do Conceito de Контейнеры. Де Манера Резомида:
Контейнеры Сан-«Паноты» PARA Distribuiçãããa da Sua Applicação junto COM O Ambiente E В качестве зависимости Para Sua Sua Execução. AO Contrário de Máquinas Virtuais, Que Simulam o Оборудование, ОС Контейнеры FOCAM EM Символ O Система в эксплуациональном.
EM Termos Práticos: Vovê Cria UMA ImageM Que Irá Cont Conter ToDos OS Passos E Зависимость Para Rodar Sua Applicação, Como:
- Примиляя Sua Applicação.
- COM O BUSTORDADO DA Commitação, Copior Para UMA Pasta X (Por Exemplo Onde Seu Weberver Estará Servido)
- Акпликар как Configurações Mainárias (Seja Por Variveis de Ambiente Dentro da Image, Cópia de Arquivos ounnha de Comando. Подемос включительно Утилизар APT Получить Пара Instalar Endegencias Embarcadas)
- Executar Sua. Applicação.
COM A ImageM PRONTA VOCO BELLMENTE PORE EXPUTA-LA. Nesse Ponto Temos o Контейнер Da Sua Appleação.
AGORA VEM A AGORA CESTãO DEM MILHãO DE REAIS:
Mas Rodolpho, Como Criamos Essas Imagers!?
Meus Amigos, COMO Quase Tudo Em Ti, Temos Diversas Tecnologias Para Criarmos Images, Algumas São:
- Докер (o queridinho da vez!)
- RKT.
- Контейнер
Então Vamos Falar, Finglemee, Sobre Docker!
Docker, Images, контейнеры e o dockerhub
Moby, O Miscote DO Docker (Fonte: https://www.docker.com/sites/default/files/d8/2019-07/Moby-logo.png )
Antes de Partimmos Para Os Decales Técnicos, Vamos Conhecer UM POUCO SOBRE EMPRESA. Докер é a desenvoldora de duas soluções que facilitam, bastante, утилизаасао-де-контейнеры por desenvoloves:
- Docker Desktop : Ferramenta Para Facilitar A Instalação E Uso de Containers EM Ambiente Windows E Mac OS
- Dockerhub : Repositório Central Para Publicação de Images ( um nuget ou npm para images docker )
Exitem várias emprasa para a para a para comunidade empresa e na criação da OCI (открытая контейнерная инициатива) Порему Essa Parte Escapa Da Ideia Do Post de FoCarmos Em Como Utilizar! Recomendo UMA Boa Lida No Site Da Docker E Do Oci, Vale A a Pena!
Во всяком случае, Vamos Para Parte Prática! NãO Vou Abrandar Neste Post Como Instalar E Configurar O Docker Desktop Porém SE VOCê Precisa Deste Passo Passo Pove Conferir IM Учебник Muito bom Не Própio Сайт da docker Отказ
Partiremos Daqui, Docker Desktop Instalado E PARONTO PARA RODAR!
Vamos Abrir Tminal E Digibal A Suagesão Do Docker Desktop.
ExecutAndo A Image Do Tutorial
APOS RODAR O Comando Vovê Poderá Acessar http://localhost E Acompanhar o Учебное пособие в Pessoal Da Docker! Porém, Vamos Derustrinchar Aqui O Comando Que Foi Executado:
- Docker Indea Que Vamos Utilizar O Docker-Cli 😅
- Запустите индикацию Que Vamos Executar UMA Image.
- -dp 80:80 INDICA DUAS COISAS: -d SINALIZA QUE O DAOMEN EXECUTE EM PRONITE E -p 80:80 Индика que queremos que a Porta 80 DO Sistema Atroual Seja Mapeada Para A A Porta 80 DO Container (OU SEJA, QUANDO ACESSARMOS A POTATA 80 DA NOSSA MáQUINA A CHAMADA SERA ENCAMINHADA PARA PORTA 80 DO CONSTERAR)
- Docker/Get Made Cinaliza A ImageM SER EXPUTADA. Подемос идентифицирован que será uma imagem com o nome de Начало работы E Virá do Repositório/Usuário Докер Отказ Примечание que não descrevemos nenhuma tag (Através de: Tag No Fim Da Image) Então Tag последний Será Utilizada
Essertem Autom Argentos ГАЕТЕНТАЦИИ EQUE UTILIZAREMOS Bastante, ELES SãO:
- —volume OU -V: правда Магазин Mapearmos UMA Pasta/Gome Д.А. Ноза Маскина Para Dentro do контейнер
- —en ou -e: Premate que indexamos валюты para variveis de Ambiente Doctro Do Container
- —NETWORK: PERVIE QUE REACHINAMOS UMA Rede (виртуальный) Onde o Контейнер Será Conectado
Relectionncia Commanda DOS Parâmetros Pode Ser Contrtrada Акхи Отказ Agora Vamos Discutir O Местные де onde Pegamos Image: Dockerhub.
O Dockerhub é o Реестр (Ou Seja UM Repositório de Images) Ofial da Докер Отказ UsiteM Outros E Assível Executar Seu Próprio Реестр (включительно Atrás de Containers!), Mas O Mais FamsoSo é o Dockerhub. NELE PodeMos Encontrar Imagens Para Várias Applicações, Como:
Antes de Falarmos Sobre Como как Images São Criadas, Vamos abordar Mais UMA Questão:
» COMO DESENVOLDOR, QUAL A a Vantagem de Utilizar Контейнеры AO Invés de Instalar Tudo Na Minha Máquina!?
Do Ponto de Vista Técnico Eu Diria Que главный вантагем É Poder ArroxiMar Ao Máximo Seu Ambiente de desenvollizemento Ao Ambiente de Produção Mantendo как Mesmas versões das endeências. Включительно, oice Poore Garantir Que Todos OS Desenvoldores Estarão Utilizando As Mesmas Versões de oneedências Para Seu Projeto!
Outra Vantagem EM Qualidade de «Vida», Esperialmente No Caso de Quem Utiliza o Windows, é que Контейнеры Podem Ser Criados E Deltados SOB Seconda E FISTILMENTE Отказ Ассим QUANDO VOCE ESTIVER TRABALHANDO EM OUTRO PROJETO Basta Parar OU Удаление ОС Контейнеры E ОС Рекурс Серну Либерадос Отказ
POR Exemplo, ЕС ГОСТО де экспериментар Com Difeerentes Bancos de Dados (включительно Armazeno Vários Docker-Compose Em Meu Github PARA FACILITAR O SCAFFOLD DE PROJETOS) E SE EU FOSSE Instalar Todos Е.М. ПК (Que Também Uso Para Jogar! хахаха) Серия гм нефтяной дефицит. Ter UMA VM Para Cada UM? Хаджа Диско! Então, Pra Mim, Flexibilidade de Poder Subir E DECCER ESTES Containers Elgo Que Me Ajudou Bastante Estudar e Utilizar Diferentes Bancos de Dados Em Vários Projetos .Net!
BEM, Vamos Agora Ver COMO Estas Images Сан-Криадас ?
Criando O Dockerfile Para Nossa API
Vamos Realizar O Processo Da Maneira Fácil, Utilizando O Visual Studio 2019 ( Também Dá Para Fazer No 2017 ), Mas Pegarei O Bulleardado E Comentarei Passo-A-Passo O Que Está Sendo Feito 😄.
Abra Решение Нет Visual Studio E No Solution Explorer Clique Com O DiraTo Sobre A API E Eccolha Добавить> Поддержка докера … E, Dialog o quando aparecer o, escolha a opção de Контейнеры Linux
APOS Shaleizar O Processo O Visual Studio Fará As Seguintes Operações:
- UM NOVO ARQUIVO, DOCKERFILE, SERA CRIADO NA RAIZ DO PROJETO
- UMA NOVA ENTRADA SERA ADICIONADA NO LOCKSETTINGS.JSON делать проще
- Algumas novas linhas serão adicionadas нет .csproj do projeto
- Um Novo Arquivo .Dockerignore Será Criado Na Raiz Da решение
Vamos Por Partes, Primeiro Olhno O Mais Gathere de Todos: O Dockerfile Отказ
O dockerfile é o passo-a-passo para que o Docker Daemon (Processo Que Realiza A «Commitação» DAS Images) Saiba de Onde Começar, O que Realizar E Para Onde Jogar OS ResultaDos. É UMA CETITA DE BOLO A SER EXPUTADA PARA PROPONIBILIZAR NOSSO ALPLACTIVO.
https://medium.com/media/94df0ea7345472f920daea8ea38d2762/href
Pasinemente O DockerFile VAI Cont Conter TODOS OS PASSOS QUE VOCOUTARIA PARA PURELAR SUA API Através Д.А. Линха де Командо Отказ Para Quem Está Acostumado Executar As Coisas Semper Pelo Visual Studio OS Comandos Podem Parecer Estranhos, Mas Rapide Nos Acostumamos Com Eles.
No Começo Da Minha Jornada Com Docker Passei Duas Semanas Utilizando Apenas O Visual Studio Code E O PowerShell, Para FiCar Mais Привычно AO Processo «Руководство по Procile E Distribire Appleações .net.
Algo Interestante É Que O Padrão Do Visual Studio Já Vem Com Uma Otimização Muito Boa Chamada de Многоступенчатые сборки. Isso Premate Que o Docker использует кэш Ems Entre Cada Passo Don Dockerfile E DESSA Maneira Tenha de ReMombile Apenas Partes alteradas da Image.
Por Exemplo: O Шаг 8 (Восстановление DOS Nugets) Só Será Refeito Caso Ocorra Alguma Alteração NAS Зависит от CSPROJ, Que é CopiDo Нет шага 7!
Segunda Alteração, No Launchsettings.json, NOS Premite Executar E DEPURAR O NOSSO Container Através делает Visual Studio.
Launchsettings.json com docker.
Adição DAS ProPriedades Httport E SSLPORT NOS Permitem Garantir Que o Executado Para Debug redessa semper nestas mesmas portas ! Pessoalmente NãO SEI POR QUAL MOTIVO ESTAS Configurações Não São AdicionAdas Accueteds Assim Como São Para UM Projeto Executado Da Maneira Contuctional.
Alteração No.csproj Ужели в интеграции Englação entre o Visual Studio E O Docker Desktop Вамос Дар Ума Ольхада:
.csproj com as tags adicionais. DockerFileTag Grifada Foi Adicionada Maluementmente E Será Explicada Quando Formos PuredOS A Image!
Финализация o .dockerignore adicionado:
Algumas linhas foram. adicionadas
O .Dockerignore. é para o. Docker o que o .gitignore é para o git. UM .Dockerignore Bem Escrito Подтверждение Que Apenas OS Arquivos Estritamente Breathrios Sejam Copiados Para of Nossa Imagem Отказ
Fingermente PodeMos ver Интеграасао Sendo Executada Através do Вид контейнеров. Caso Ele Não Esteja Visível POR PADRãOO EM SEU Visual Studio O MENU PARA HABILITA-LO E View> Другие окна> Контейнеры. О Контейнер View Nos Вырешить визуализатор Rapidamente Quais Контейнеры Estão Sendo Executados , SEUS журналы , Portas Expostas, Arquivos Doctro Do Container E Как variáveis de Ambiente Defindidas Действительно
Logs делают контейнер Expostos без контейнеров
Adição Do Docker à Api é Silps Assim Utilizando O Visual Studio. Porém Leia CuidAdosamente O Dockerfile Para Intender o que está sendo feito.
Закупайте No Github Exemplos de Automos Dockerfiles de Autras Appleações, Dê UMA Boa Olhada Nos Comandos Do Docker. Existem Vários Conceitos (COMO Volumes E Networks) Que Precisam BEM Mais Do Que UM PORA Serme ExprickaDos E São Melhor Vistos Na Prática Do Que Na Teoria! Eventualmente Farei UM Post Mais Focado NoS doatales Do Docker E, UM Dia, Sobre Kubernetes. Porém o foco desta série é CMS CMS Понта-а-Понта.
Криандо О Оркестрадор (Docker Compose) Para A API
Antes de Falarmos Sobre A Integação COM O Visual Studio, Vamos Ver o Que ém «docker compose»:
Им Docker Compose É UM Documento EM Formatoyaml Que. Descreve Quais Images Deve Ser ExecutAdas , Суас Зависимость , Суас Configurações е como devem se comunicar Отказ
Apesar Da Ideia DO CMS CMS SER UMA Applicação «Лобо Солитарио», Vamos Adicionar Suporte a Orquestração de Containers Ao Nosso Projeto! Será Mais Para демонстрирует использование Utilidade Do Docker Compose, E Sua Integração Com O Visual Studio, Durante o Desenvolvimento Отказ Де Манера Resumida A Вантагем Де AdiCionar UM Docker Compose à Sua Solution É Garantir Que desenvoldores Com Docker Desktop содействие Tenham Ur Ambiente Pronto Para desenvolver (e debugar) assim que aBrirem seu projeto.
Вы Суджа: JUNTO COM O SEU CODIGO VOCO ARMAZENARARAM UM DOCKECTOO QUE DECKREVES AS DEENCENCIAS MANSIRAIAS DO ABMIENTE DE SUA ALPACKACHãO Отказ Apesar de Não Serme Muito Recomendados Para Produção OS составляет Фасилитам, E Muito, OS Ambientes de desenvollimenta e Testes.
Vamos Lá! COM O Solution Explorer Aberto Clique EM SUA API COM BOTãO DIREATO E ESCOLHA Добавить> Поддержка контейнера Orchestrator … E Escolha «Docker Составьте диалог No Playiro.
Para Este Exemplo Escolha Docker Compose, Em Outro Post Falaremos Sobre Kubernetes!
Caso Vovê Tenha Editado O Dockerfile O Seguinte Dialog Será adresentado, Caso Queira Substituir o Arquivo Clique em да.
O Visual Studio Irá Gerar As Seguintes Alterações No Projeto (E Solution):
- Adicionar um novo projeto .dcproj решение
- Gerar Um Arquivo .Docker-Compose.yml, Este Será nosso Составьте пункт ambiente normal
- Gerar Em Arquivo .Docker-compose.override.yml, este será nosso commonamento (para ambientes de debug) AO Compose
- AdiCionar, AO Projeto DA API, UMA RELECENCIA AO .DCPROJ
Vamos Foar Nos Arquivos .yml, Sintaxe É BEM STRPERS E Fácil de Decorar E Achar Relectioncias, O Que é Bom Pois o Suporte Do Visual Studio AoS Arquivos Deixa a Desejar 😅
Vamos Dar Uma Olhada Nos Arquivos Gerados:
Docker-Compose.yml.yml.yml
docker-compose.override.yml.yml.
Примечание. Semelhança DOS Parâmetros DAS Chaves Do Nosso Docker-Compose Com ОС Parâmetros DO Docker Run. Isso não é mera coincidência! Нет Фундо Подемос Encarar Que o Docker-Compose é Uma Maneira de Организатор E Unificar Triversob Docker Run.
Bewaymente Note, Através Do Containers View OU DO DASHBOABALD DO DOCKER DESTTOP, QUE O Visual Studio Accessous Botou Todos Serviços Que Estão No Docker-Compose.yml Para Rodar:
Para Arramar As Portas, E Mantendo A Integação Que NoS Perious Debug Através Do Visual Studio, SeguiMos Mesma Ideia Da Alteração Do Launchsettings.json. COMO Queremos Isso Apenas Para Ambientes de desenvolvimento vamos abrir o arquivo docker-compose.override.yml e adicionar um MapeAmento Expliciccito Para Portas Do Nosso Container:
Achando O Переопределить не предупредитель решения
Альтеасао Para BurniaRia.
Relembrando Sintaxe Lá do Docker Run: À Esquerda Temos Porta Do Host (Sua Máquina) E à direita temos Porta DO Контейнер (api nossa). Нет Caso A Configuração Está Dizendo Que Semper Que Acessarmos http://localhost : 5000 е https://localhost : 5001 Na Máquina Местная чамада Será Redirecionada Para Posta 80/443 Денго сделать контейнер Действительно
AGORA VAMOS Подтверждают Que o Debug Funciona? PARA DEMARE VOU ADICIONAR UM BREAKPOINE EM DOS MEUS MÉTODOS DO STARTUP.CS E Mandar O Visual Studio INICIAR O DEBUG:
Точка останова (без хоста) SENDO ATIVADO PELOO Container.
Примечание que meu iconfiguration Está devidamente populado com as configurações do appsettings.json, appsettings.development.json, variveis de Ambiente E Meu Secrets.json. O MAPEAMEATEO DOS Appsettingsocormrem Durante Criação da Nossa Image, Porém o MapeAmento do Secrets.json ém «Бонус» DO Scaffold Que o Visual Studio Fez Do Docker-Compose.override.yml. EM Esseizico a linha de gome que mapheia o deretório $ {appdata}/microsoft/usersecrets da minha máquina (host) para o diretório/raot/.microsoft/usersecrets do Контейнер, com o modo ro ( readly).
PARA демонстрация COMO Podemos alterar. как Configurações дает никаких iconfiguration Através de Variáveis de Ambiente Контейнеры NoS Vou Renomear Nossa базу данных SQLite Para «averastorage.db» Através da condventString no docker-compose.override.yml:
Alterando, por ambiente, база данных connectionString da
Colocando Um BreakPoint E Analisando O Iconfiguration PodeMos ver ОС Drivesos Providers e ver que o valor softido pelo docker-compose está lá:
ИДЕНТИФИФИФИФИКАЦИЯ O ПОСТАВЩИКЕ De Variáveis de Ambiente
Encontrando nossas alterações docro do Provider!
Este É O Básicão Sobre O Docker составляют. COMO SEMPER RECOMENDO A Leitura da Documentação Para Vert Melehor OS DetaTales E Até Dicas Mais Avançadas! Documentação Está Disponível aqui. .
Рассматриваются
Ходж Вимос, BEM SUPERFIALMYEE o que São Containers, Quais Suas Utilidades E COMO Podemos Utilizar O Docker Desktop Junto DO Visual Studio Para Facilitar Nossa Vida Durante o Desenvolvimento de Aloxações. Este Foi, Acredito, O Maior Post Da Série Até Agora E Aninda Assim Ficou Extractamente поверхностно. Espero que o Post Tenha Sido O Suficatee Para Atiçar a Curiosidade Daqueles Que Ainda Estavam Indecisos Sobre As Vantagens de Containers!
Prometo Fazer UM Post Algum Dia Indo Nos Pormenores Do Docker E, включительно, TRAZENDO Exemplos Mais Complemple de Orquestração (COMO, POR Exemplo, Subir UMA API, УМ УМП, ИС Фриунд Em Banco Ao Mesmo Tempo) MAS) Нет Momento Estou Dedicado EM Avançar Com o Cell CMS!
Para o Próximo Post Vamos Dar Uma Olhada EM Испытания Unitários Де Манера Продутива E Prática! Утилизандо как библиотеки XUNIT, Autofixture, MOQ E FluentAssertions.
Obrigado POR LEREM MAIS ESTE POST, ATÉ PROUXIMA E ABRAçOS!
Cellcms (11 частью серии)
Оригинал: «https://dev.to/ardc_overflow/cell-cms-utilizando-docker-para-criar-containers-3h4o»