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:latest

CI: Disponibilize para o mundo

services:
  nextcloud:
    image: ghcr.io/librecodecoop/nextcloud-dev-php${PHP_VERSION:-82}:latest

Vamos para o servidor?!

`-- projects
    |-- akaunting
    |-- archive
    |-- duplicati
    |-- mysql
    |-- nextcloud-docker
    |-- nginx-proxy
    |-- onlyoffice
    |-- postgres
    |-- producao-cooperativista
    |-- redis
    `-- site

Estrutura 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

Cooperativismo

Conheça mais

  • Plataforma CapacitaCoop
  • SESCOOP
Cooperativismo
LibreCode

@LibreCodeCoop

Containers docker

By Vitor Mattos

Containers docker

Using Docker containers for development and production, know the benefits and importance of Docker in the development process, about agility, reproducibility, and the use of different versions for an efficient development environment.

  • 171