AD

Alisson Dias05/07/2026 11:49
Compartilhe

Iniciando no Docker

  • #Linux
  • #Docker
  • #Python
  • #DevOps

1º Imagem criada

Fonte e créditos:

Como é a primeira imagem criada, ela é bem simples. Criei um arquivo hello.sh com o comando echo "Hello Docker" e dei permissão chmod +x para ele. Criei um outro arquivo chamado Dockerfile, que é padrão do Docker, e coloquei as informações que seriam usadas para criar a imagem.

Dockerfile

FROM alpine:3.21 # Inicia uma imagem do Alpine (distro Linux bem leve) para executar o script.

WORKDIR /usr/src/app # Define /usr/src/app como o ambiente de trabalho, os comandos abaixo são executados aqui.

COPY hello.sh . # Copia o arquivo hello.sh para dentro de /usr/src/app.

# RUN chmod +x hello.sh # caso esteja no windows ou não tenha executado o comando antes

CMD ["./hello.sh"] # Quando rodar o docker run, o comando executado será ./hello.sh.

Comandos:

  • docker build -t hello-docker .: para criar a imagem.
  • docker image ls: para conferir se a imagem existe.
  • docker run --name hello hello-docker: para rodar a imagem e criar o container.

Configurando um container do yt-dlp

O yt-dlp (https://github.com/yt-dlp/yt-dlp) é um programa para baixar vídeos do YouTube e de outros sites. Criar uma imagem Docker para ele foi um processo bem direto. Primeiro, é necessário baixar o programa para o caminho /usr/local/bin/yt-dlp e dar permissão chmod a+rx (onde a aplica a alteração a todos os usuários, e r e x dão permissão de leitura e execução). Também é preciso instalar o Python 3 e o ffmpeg para que o programa rode corretamente.

Com isso em mente, criei um Dockerfile com essas configurações:

Dockerfile

FROM ubuntu:24.04

WORKDIR /mydir

RUN apt-get update && apt-get install -y curl python3 ffmpeg
RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
RUN chmod a+rx /usr/local/bin/yt-dlp

CMD ["/usr/local/bin/yt-dlp"]

Mas isso não funciona como o esperado. Por conta do CMD atual, ao passar a URL do vídeo na execução do container, o Docker gera um conflito. Para resolver isso, usei o ENTRYPOINT, que basicamente permite que o container se comporte como um executável nativo.

Dockerfile (Versão final)

Dockerfile

FROM ubuntu:24.04

WORKDIR /mydir

RUN apt-get update && apt-get install -y curl python3 ffmpeg
RUN curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
RUN chmod a+rx /usr/local/bin/yt-dlp

# CMD ["/usr/local/bin/yt-dlp"]
ENTRYPOINT ["/usr/local/bin/yt-dlp"]

Agora sim, as URLs inseridas serão baixadas. Mas atenção: os vídeos ficam salvos na pasta /mydir dentro do diretório do container. Depois que encerrei o container, os vídeos foram perdidos, então caso alguém vá tentar replicar, cuidado com isso!

Como os arquivos baixados ainda estão ficando salvos só dentro do container, é isso que vou resolver agora, usando volumes.

Volumes são o mecanismo usado para guardar dados gerados e usados ​​por contêineres Docker.

Usando o comando docker run -v "$(pwd):/mydir" yt-dlp link, o arquivo baixado já vai ser enviado para o root da maquina (o parâmetro -v cria um diretório no caminho definido se o arquivo não existir no sistema).

Colocando um container online

Clonando o repo https://github.com/docker-hy/material-applications, o projeto que vou usar é o rails-example-project.

Dockerfile

FROM ruby:3.1.0
EXPOSE 3000
WORKDIR /urs/src/app
RUN gem install bundler:2.3.3
COPY Gemfile* ./
RUN bundle install
COPY . .
Run database migrations by following instructions from README
RUN rails db:migrate RAILS_ENV=producti

Já deixa tudo pronto para rodar o docker build . -t rails-project && docker run -p 3000:3000 rails-project, assim o projeto já começa a rodar no localhost:3000.

Compartilhe
Comentários (0)