#python #python-3.x #docker #docker-volume
#python #python-3.x #docker #docker-volume
Вопрос:
Я пытаюсь создать образ из приведенного ниже файла docker
FROM tensorflow/tensorflow:latest-py3
RUN pip install -q keras==2.3.1
RUN pip install pillow
RUN mkdir -p /edge_app/src WORKDIR /edge_app/src
COPY model_1.py /edge_app/src
EXPOSE 31700
VOLUME ["/testdata"]
CMD ["python", "model_1.py"]
моя древовидная структура
├── data
│ └── predictions_result.npy
├── Dockerfile
├── m1.h5
├── model_1.py
├── testdata
│ ├── 0.jpg
│ ├── 10.jpg
│ ├── 1.jpg
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── 4.jpg
│ ├── 5.jpg
│ ├── 6.jpg
│ ├── 7.jpg
│ └── m1.h5
model_1.py файл
import socket,keras,sys,os,csv,subprocess,time,shutil
from keras.preprocessing import image
from socket import *
import numpy as np
from keras.applications.vgg19 import VGG19,preprocess_input,decode_predictions
from keras.preprocessing.image import img_to_array,load_img
from keras import models,layers,Model,Input
from keras import backend as K
import tensorflow as tf
from keras.models import load_model
model=load_model('m1.h5',compile=False)
images=[]
for img in os.listdir('testdata'):
img=os.path.join('testdata', img)
img=image.load_img(img,target_size=(224,224))
img=image.img_to_array(img)
img=np.expand_dims(img,axis=0)
img=preprocess_input(img.copy())
images.append(img)
images=np.vstack(images)
predictions=model.predict(images)
np.save('/workdir/data/predictions_result',predictions)
Запуск образа Docker с помощью приведенной ниже команды
sudo docker run --rm -it tensor-keras
Когда я пытаюсь запустить приведенную выше команду docker run в Linux, я получаю приведенную ниже ошибку помощь высоко ценится спасибо за вашу замечательную помощь
OSError: Unable to open file (unable to open file: name = 'm1.h5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)
Комментарии:
1. Единственный файл, который вы
COPY
вводите в образ, — это исходный код Python; там нет никаких фактических данных. Если выdocker run --rm -it tensor-keras bash
запустите временный контейнер с отладочной оболочкой, и вы сможете увидеть, что было помещено в изображение.2. @DavidMaze, спасибо, ваша помощь высоко ценится. Я использую эту команду docker run —rm -it -v $ (pwd):/workdir -w /workdir tensor-keras, он работает нормально. любое предложение, как бы мне изменить свой Dockerfile для достижения этой цели.
3. Вы никогда не сможете указать каталоги хоста или иным образом принудительно использовать ресурсы хоста в Dockerfile. (Вы могли бы включить
WORKDIR
директиву для замены этой-w
опции.) Вы можете рассматривать виртуальную среду Python как еще более облегченную схему изоляции, которая не требует специальных разрешений, но может напрямую использовать файлы хоста без специальной настройки.