Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Criar um docker para execução #1

Open
yardz opened this issue Apr 2, 2021 · 7 comments
Open

Criar um docker para execução #1

yardz opened this issue Apr 2, 2021 · 7 comments

Comments

@yardz
Copy link

yardz commented Apr 2, 2021

Já pensou em criar um docker para executar o script?
Vou dar o meu exemplo, eu achei a idéia super interessante, gostaria de usar mas não sei nada de Python...

Pra mim, rodar esse projeto por si só já seria um desafio... Agora se tivesse um docker seria só docker-compose up
O docker também traria outras vantagens, como por exemplo, facilitaria as pessoas a contribuirem para o repo :-)

@ismaell
Copy link

ismaell commented Apr 8, 2021

Docker é overkill para um aplicativo assim insignificante de simples, né?

Podería se simplificar a instalação sim... mas acho que não da para usar Docker...

@yardz
Copy link
Author

yardz commented Apr 9, 2021

Cara, eu sou da opinião que todo projeto deveria ter docker. Até mesmo se for só pra dev.
Eu pessoalmente não gosto de instalar nada na minha máquina. Nada de nada mesmo, deixo ela o mais limpa possível.

Então mesmo pra dev, eu acho docker importante e indispensável.

@ismaell
Copy link

ismaell commented Apr 9, 2021

Python tem métodos mais simples:

@yardz
Copy link
Author

yardz commented Apr 9, 2021

Pelo que eu vi, esse não parece ser o comportamento padrão... Mas mesmo se for, ainda tem a própria instalação do Python.
Com docker vc não precisa fazer nem isso...

Cara, novamente, se tiver que instalar 1 coisa (qualquer) eu já prefiro docker.

@ismaell
Copy link

ismaell commented Apr 10, 2021

Você conhece Docker e quer usar ele em tudo, tá bom, mas isso não significa que seja necessário ou o método mais simples/eficiente, para algo tem gerenciadores de pacotes, etc.

O seu docker-compose.yml deveria ficar algo assim:

services:
    speedtest:
        network_mode: host
        build: .
        volumes: .:/opt/SpeedTest
        command: python3 /opt/SpeedTest/TestSpeed.py

E o Dockerfile:

FROM python:latest
COPY requirements.txt /tmp/requirements.txt
RUN pip3 install -r /tmp/requirements.txt

@yardz
Copy link
Author

yardz commented Apr 12, 2021

Você conhece Docker e quer usar ele em tudo, tá bom, mas isso não significa que seja necessário ou o método mais simples/eficiente, para algo tem gerenciadores de pacotes, etc.

Node tem gerenciador de pacotes o npm e yarn, PHP tem o composer e eu acredito que a maioria das linguagens modernas devem ter algum tipo de gerenciador de pacotes. Isso absolutamente não é uma exclusividade do Python (nem de nenhuma linguagem).

Virtualizar o ambiente é uma coisa completamente diferente de gerenciadores de pacote, a existência de um não invalida ou diminui a importância do outro.

Se você não entende o quão importante é a garantia de um ambiente igual para todos desenvolvedores (ou usuários). Desculpa, mas nem da pra conversar.

@ismaell
Copy link

ismaell commented Apr 12, 2021

Eu não estou negando a utilidade da virtualização, só estava falando de que não precisa virtualização nenhuma, mas...

Não é assim como você fala, pois para o Docker o entorno onde você cria a imagem é parte do input lamentavelmente, então ele não garante repetibilidade. Se você quer um sistema que oferece garantias maiores precisa ir para algo como o Guix (eu recomendo muito você olhar se não conhece).

O Docker é só uma das opções, e não é a melhor para criar as imagens, nem muito menos para correr um aplicativo simples.

O método mais simples é você ter o Python no sistema operacional, e criar um entorno venv para o aplicativo... você está falando de ter toda a infraestrutura do Docker instalada no sistema para criar algo que ademais é bem mais complexo, e que você não tem jeito de comprovar, então não vai ficar melhor do que seu sistema com o Python.

Ademais, se você quer garantias no desenvolvimento de software, a repetibilidade não é suficiente, nem agregando acima testing; o método deve incluir uma disciplina de qualidade completa, porque você tem que garantir que qualquer cenário onde os desenvolvedores trabalham em paralelo vai produzir uma composição válida depois, e dois aspectos muito importantes são o análise das dependências e o análise estático das propriedades do seu código nesse contexto, para validar o uso dessas APIs (sem entrar no tópico das necessidades internas ou objetivo do seu código). Desse jeito você poder provar que as dependências estão corretas, é você pode atualizar essas dependências, pois é uma loucura você dizer dep==ver e deixar isso aí 10 anos, assim é como você consegue garantir o software rot.

Perdão, eu já me estendi muito, é um tema muito longo...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants