Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Manipulação de arquivo txt com Python no Docker

Olá, estou tentando criar um docker container com python, onde eu terei que ler e escrever em um arquivo txt, mas não estou conseguindo

Fiz o código do Python com o seguinte trecho:

entrada= open('entrada.txt', 'w')
entrada.writelines('conteudo')
entrada.close()

saida= open('saida.txt', 'r')
for linha in saida:
    print(linha)
saida.close()

No Python puro o código funciona normal e ocorre a manipulação dos arquivos, mas ao fazer o build da imagem e gerar o container a manipulação do arquivo não acontece e não retorna nada.

O que eu preciso fazer de diferente?

Edit: Estou fazendo o run com o comando:docker run --rm -d -p PORTA:PORTA nome_imagem

Edit2: Estou usando virtualbox no windows

4 respostas

Olá Henrique, tudo bem? O que você precisa é trabalhar com volumes, para que esses arquivos sejam mesmo persistidos no disco e fiquem de forma permanente, porque dessa forma que você fez, você consegue até gerar o arquivo dentro do container, poderia verificar isso acessando o terminal do container, para isso você usar o comando:

docker exec -it nome_do_seu_container bash

Porém, quando o container for encerrados todos os arquivos que foram criados dentro do mesmo serão perdidos, para isso você vai precisar usar volumes e também já verificar como usar os volumes com virtual box, que é necessário de uma configuração a mais, esse artigo (em inglês) explica como trabalhar com volumes.

Espero ter ajudado!

Obrigado por responder, mas o tutorial não funcionou 100% pra mim.

Quando eu rodo o comando: "docker run --volume //..." Eu recebo esse erro:

"docker run" requires at least 1 argument. See 'docker run --help'.

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container.

Edit: Eu pesquisei melhor sobre volumes e não consegui entender como isso vai me ajudar com a minha dúvida de manipulação de arquivo txt pelo código do python.

solução!

Henrique, no caso você faz a execução desse arquivo python dentro do container correto? Então, você poderia subir o container com o comando:

docker run --rm -d -p PORTA:PORTA nome_imagem

E logo em seguida entrar dentro desse container com outro comando:

docker exec -it nome_do_seu_container bash

E verificar se o arquivo saida.txt foi realmente criado, se sim, então funcionou como o esperado. Porém como indiquei os volumes é para que você passar salvar esse arquivo saida.txt na sua máquina física mesmo, já que quando o container parar esse arquivo (saida.txt) será excluído junto com o container de forma permanentemente.

Obrigado, consegui

Se mais alguém tiver a mesma dúvida, o comando para copiar o arquivo do container é:

docker cp nome_ou_id_do_container:/arquivo.txt .