Containers docker
Vitor Mattos
do desenvolvimento para produção
Quem sou eu?
Realizador de sonhos desde 2003
Amante de opensource
Palestrante
PHP Zend Certified Engineer ( ZEND024235 )
PHPRio ( https://t.me/phprio )
CTO LibreCode coop (https://t.me/LibreCodeCoop)
Redes sociais: ( VitorMattos ou VitorMattosRJ )



Porque Docker?

coperativa de TI
Agilidade para montar ambiente
Ambiente replicável
Redução de diferenças entre setup
Uso de diferentes versões

Possibilidade de uso de diferentes versões de tudo no mesmo computador/servidor
Isolamento de processos

Ambiente de desenvolvimento
Porque Docker em desenvolvimento?
Simplicidade
Porque Docker em desenvolvimento?
Documentação
Produção
Talk is cheap
Show me the code!

https://github.com/librecodecoop
CI: Teste suas imagens
ShellCheck
finds bugs in your shell scripts.
CI: Teste suas imagens
CI: Teste suas imagens
Dependabot

CI: Teste suas imagens
Dependabot

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "docker"
directory: "/.docker/"
schedule:
interval: "daily"Registry
Repositório de imagens
Why a registry?!

Quick deploy
CI: Disponibilize para o mundo
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
push: true
tags: user/app:latestCI: Disponibilize para o mundo
services:
nextcloud:
image: ghcr.io/librecodecoop/nextcloud-dev-php${PHP_VERSION:-82}:latestVamos para o servidor?!
`-- projects
|-- akaunting
|-- archive
|-- duplicati
|-- mysql
|-- nextcloud-docker
|-- nginx-proxy
|-- onlyoffice
|-- postgres
|-- producao-cooperativista
|-- redis
`-- siteEstrutura de pastas
Exemplo
Let's Encrypt
Database
networks:
mysql:
external: true
name: mysql
reverse-proxy:
external: true
name: reverse-proxy
services:
mysql:
build: ./.docker/mysql
volumes:
#- ./.docker/mysql/conf:/etc/mysql/conf.d
- ./.docker/volumes/mysql/dump:/docker-entrypoint-initdb.d
- ./.docker/volumes/mysql/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD
networks:
- mysql
restart: always
Backup
networks:
reverse-proxy:
external: true
name: reverse-proxy
services:
duplicati:
image: duplicati/duplicati
container_name: duplicati
restart: always
volumes:
- ./volumes/duplicati-data:/data
- /root/projects:/projects
environment:
- VIRTUAL_HOST
- LETSENCRYPT_HOST
- LETSENCRYPT_EMAIL
- VIRTUAL_PORT=8200
Monitoramento

Conclusão
Conclusão
Use Linux

Conclusão
Use Linux


E no código, como faço?
Compartilhe seu conhecimento

Contribua com projetos de código aberto


Conheça mais
- Plataforma CapacitaCoop
- SESCOOP


@LibreCodeCoop



