Я создал Dockerfile для скрипта Python, который требует постоянных данных в томе. Проблема в том, что файлы для тома не будут размещены в контейнере.
Dockerfile:
FROM python:3
COPY grab_immo /grab_immo
RUN mkdir /data
ADD ./data/contacts /data
ADD ./data/run.log /data
ADD ./data/template /data
VOLUME /data
WORKDIR /grab_immo
RUN pip install -r requirements.txt
ENV MY_ADDRESS=value \
PASSWORD=value \
SMTP_HOST=value \
SMTP_PORT=value
CMD [ "python", "./main.py" ]
docker-compose.yml
---
version: "2"
services:
grab_immo:
build: .
image: yyy/grab_immo
container_name: grab_immo
environment:
- MY_ADDRESS = ''
- PASSWORD =
- SMTP_HOST =
- SMTP_PORT = 587
volumes:
- /home/yyy/grab_immo_config:/data
restart: unless-stopped
, поэтому явключил это в файл python для устранения неполадок:
print(os.path.isfile('/data/contacts') )
print(os.path.isdir('/data'))
docker-compose up дает мне следующее:
grab_immo | False //print(os.path.isfile('/data/contacts') )
grab_immo | True //print(os.path.isdir('/data'))
grab_immo | /grab_immo/main.py
grab_immo | Traceback (most recent call last):
grab_immo | File "./main.py", line 248, in <module>
grab_immo | main()
grab_immo | File "./main.py", line 206, in main
grab_immo | sendmail('asdf', 'asdf', 'asdfk', 'deskldf')
grab_immo | File "./main.py", line 84, in sendmail
grab_immo | names, emails = get_contacts(newPath + 'contacts') # read contacts
grab_immo | File "./main.py", line 122, in get_contacts
grab_immo | with open(filename, mode='r', encoding='utf-8') as contacts_file:
grab_immo | FileNotFoundError: [Errno 2] No such file or directory: '/data/contacts'
grab_immo exited with code 1
проверка докера:
"Mounts": [
{
"Type": "bind",
"Source": "/home/yyy/grab_immo_config",
"Destination": "/data",
"Mode": "rw",
"RW": true,
"Propagation": ""
},
Я создалдиректории на хост-машине, но там никогда не было файла.
Образ был создан на машине Win10, и я пытаюсь запустить его на сервере Ubuntu-VM.
также язаменил команды ADD на COPY, попытался скопировать весь каталог и так далее.
Поскольку os.path.isdir имеет значение true, я подозреваю, что монтирование каталога работает. Но как-то ожидаемых файлов там нет ...
Спасибо за любые предложения