Проблемы при создании контейнера Docker с кодом Python - PullRequest
1 голос
/ 31 мая 2019

Я очень плохо знаком с Python и Docker, но, тем не менее, я пытаюсь создать Docker-контейнер для приложения-генератора паролей, которое я написал.Но после сборки приложения я получаю сообщения об ошибках, которые я не знаю, связаны ли они с кодом Python или с тем, как я построил Docker.

Я ожидал, что приложение будет работать нормально, но вместо этого яполучено это сообщение об ошибке:

URL? >>  Traceback (most recent call last):
  File "pwd1.py", line 6, in <module>
    url = input('URL? >>  ')
EOFError: EOF when reading a line

Это никогда не было проблемой на моем компьютере или в Sublime, где приложение всегда функционировало нормально.

Это был оригинальный код ("(...) в конце переменной "a", из-за того, что Nano не расшифровывает остальные символы за пределами видимого экрана):

import random

a = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G','g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p'(...)]

file = open('/home/mic/python/password-generator/list.py', 'a')
url = input('URL? >>  ')
file.write(url)
file.write('  -  ')
k: int = int(input('How long? >>  '))
b = (str(''.join(random.sample(a, k))))
print(b)
file.write(b)
file.write('\n')
file.close()

После исследования ошибки я изменил код так:

import random

a = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G','g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p'(...)]

file = open('list.py', 'a')
url = input('URL? >>  ')
while True:
    try:
        line = input()
    except EOFError:
        print ("EOFError")
file.write(url)
file.write('  -  ')
k: int = int(input('How long? >>  '))
b = (str(''.join(random.sample(a, k))))
print(b)
file.write(b)
file.write('\n')
file.close()

Но я получаю то же сообщение об ошибке. Я пробовал этот код на возвышенном, компьютере и онлайн-редакторах, и никто не жаловался на это.

Именно из-за этого я начал думать, что еслиэто как-то связано с моими файлами Docker.

Это мой Dockerfile:

# Use an official Python runtime as a parent image
FROM python:3.7.3

# Set the working directory to /app
WORKDIR /password

# Copy the current directory contents into the container at /app
COPY . /password

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "pwd1.py"]

Я следовал инструкциям, объясненным здесь https://docs.docker.com/get-started,, и когда я пытаюсь запустить приложениес "судо док"er run pwdmanager ", я получаю вышеупомянутое сообщение об ошибке.

Любая помощь будет принята с благодарностью

1 Ответ

2 голосов
/ 31 мая 2019

Пожалуйста, запустите контейнер Docker, используя флаг -i (интерактивный).

Пример:

docker run -i -t <your-options>

Это, конечно, оставит самую большую проблему на столе, как правильно указано в комментарии @MisterMiyagi:

input запрашивает ввод через стандартный ввод, например, с терминала. Как ты предоставить это в контейнере? Ваш файл докера, кажется, не включает любой ввод для pwd1.py

Чтобы решить эту проблему, я бы предложил вам прочитать этот ответ на SO .

Или, imho, просто пропустите использование Docker для этого варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...