我有一个要在容器中运行的python和java应用程序。
我有一个名为pass-hash
的文件夹,其中:
-h2o-start
文件夹,其中包含我用来启动Dockerfile
的{{1}},该文件夹启动用于机器学习的服务器。
-h2o.jar
文件夹,其中包含model-generator
和一个passhash.py
文件。
data.csv
应用程序包含passhash.py
,该文件从我在容器中创建的h2o.import_file("/var/my-data/data.csv")
文件夹中提取data.csv
文件,并生成一个POJO文件。
my-data
包含:
h2o-start Dockerfile
FROM openjdk:8
ADD h2o.jar h2o.jar
EXPOSE 54321
EXPOSE 54322
ENTRYPOINT ["java", "-jar", "h2o.jar"]
包含:
model-generator Dockerfile
FROM python:2.7-slim
WORKDIR /model-generator
ADD . /model-generator
RUN mkdir /var/my-data
COPY data.csv /var/my-data
RUN chmod 777 /var/my-data/data.csv
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 8080
ENV NAME World
CMD ["python", "passhash.py"]
文件包含:
docker-compose.yml
答案 0 :(得分:1)
Docker卷旨在在主机和Docker容器之间共享文件夹。如果您在主机上复制任何文件(卷的位置路径),它将自动进入容器内的可用文件。
docker卷的语法如下:
-v /home/data:/data
在以上语法中, / home / data 在主机上可用,而 / data 该文件夹在Docker容器中可用。
如果您在主机上的 / home / data 文件夹中复制任何文件,则该文件将自动在容器 / data 文件夹中可用。
希望这对您很清楚。
如果您使用的是docker-compose,请按如下所示添加卷标
volumes:
- /home/data:/data
例如:
version '3'
services:
app:
image: nginx:alpine
ports:
- 80:80
volumes:
- /home/data:/data
答案 1 :(得分:1)
答案 2 :(得分:1)
我不知道,这就是我想出的解决方案。您能告诉我更好的解决方案吗?我的问题是:我有一个使用data.csv文件生成POJO机器学习模型的python应用程序。当我为数据文件指定此python应用程序的路径时,它给出了一个例外,即该文件不存在。另外,我还有另一个用Java编写的应用程序,它使用生成的POJO文件,并根据该数据给出预测。 Java应用程序还每天更新data.csv文件。我希望每个应用程序(微服务)都在单独的容器中运行,但希望它们都使用data.csv
要回答这个问题,您需要使用卷。
尝试下面的代码。
这是您的docker-compose文件
version: "3"
services:
h2o-start:
image: milanpanic2/h2o-start
build: context: ./h2o-start
ports:
- "54321:54321" - "54322:54322"
volumes:
- /home/data:/var/my-data
model-generator:
image: milanpanic2/model-generator
build: context: ./model-generator
ports:
- "8080:8080"
depends_on:
- "h2o-start"
volumes:
- /home/data:/var/my-data
这是您的docker文件
FROM python:2.7-slim
WORKDIR /model-generator
ADD . /model-generator
RUN mkdir /var/my-data
RUN pip install --trusted-host pypi.python.org -r requirements.txt EXPOSE 8080 ENV
NAME World CMD ["python", "passhash.py"]
您的Java docker文件在哪里?
现在只需创建一个默认的data.csv文件并将其复制到您的主机位置/ home / data。
运行应用程序,让我知道。