workshop-docker

O que é o Docker?

O Docker é uma plataforma open source que facilita a criação e administração de ambientes isolados (containers)

Diferença entre Container e VM

Instalação do Docker

  • Linux:
$ curl -fsSL https://get.docker.com | sudo bash

Comandos Básicos

  • Baixar imagem
$ docker pull ubuntu
  • Listar images baixadas
$ docker images # docker image ls
  • Rodar um container flags: -it, -d e muitas outras
$ docker run -it ubuntu
$ docker run -d --name nginx -p 8081:80 nginx
  • Listar containers
  • flags: -a
$ docker ps # docker container ls
  • Para container
$ docker stop nginx # docker container stop nginx
  • Remover containers
$ docker rm nginx # docker container rm ngnix
  • Remover imagens
$ docker rmi nginx # docker image rm nginx

Rodando Postgres com Docker

  • Postgres
$ docker run -d --rm --name postgres -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_DB=workshop -e POSTGRES_PASSWORD=1234 postgres:16.3

Dockerfile

database.sql

CREATE TABLE users(
	id SERIAL PRIMARY KEY,
	name VARCHAR(60) NOT NULL,
	email VARCHAR(60) UNIQUE NOT NULL,
	password VARCHAR(60) NOT NULL
);

Dockerfile

FROM postgres:16.3

COPY ./database.sql /docker-entrypoint-initdb.d/
$ docker build -t workshopdb:1.0 . 
$ docker run -d --rm --name workshopdb -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_DB=workshop -e POSTGRES_PASSWORD=1234 workshopdb:1.0

Compose

docker-compose.yml

name: workshop-docker
services:
  postgres:
    image: postgres:16.3
    container_name: workshop
    restart: always
    ports:
      - 5432:5431
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: 1234
      POSTGRES_DB: workshop
    volumes:
      - postgres:/var/lib/postgresql/data  

volumes:
  postgres:
$ docker compose up
$ docker compose down

Usando .env

.env

#DATABASE
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=1234
DB_NAME=workshop

docker-compose.yml

name: workshop-docker
services:
  postgres:
    image: postgres:16.3
    container_name: workshop
    //restart: always
    ports:
      - 5432:${DB_PORT}
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: ${DB_NAME}
        volumes:
      - postgres:/var/lib/postgresql/data  

volumes:
  postgres:    
$ docker compose up