docker新手-构建映像后无法运行.sh文件

时间:2020-04-11 06:56:41

标签: python docker

我是Docker的新手,所以我确定我所缺少的只是几句话,但是即使谷歌搜索了几个小时,我也无法弄清楚。

python_code_to_run.py :只需加载数据集并保存...

import pandas as pd 
import numpy as np 
import os 
import h2o
from h2o.estimators.gbm import H2OGradientBoostingEstimator

airlines= h2o.import_file("https://s3.amazonaws.com/h2o-public-test-   
data/smalldata/airlines/allyears2k_headers.zip")

airlines_data = pd.DataFrame(airlines)
airlines_data.to_csv('airlines_dataset_dled.csv', index=False )

DockerFile :当我使用-build命令时,它将运行……

From python:3.7-slim-buster

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get -y install unzip build-essential libaio-dev


RUN python3 --version
RUN pip3 --version
RUN mkdir -p /src

COPY . /src
COPY /app/python_code_to_run.py /src

RUN chmod +x src/run_py_file.sh
RUN chmod +x src/python_code_to_run.py


COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

CMD [ "/bin/sh", "docker_test.sh" ]
#ENTRYPOINT [ "bash" ,  "run_py_file.sh" ] # doesn't work either

** run_py_file.sh **

python /app/python_code_to_run.py

我有一个文件夹:

 - LearningDocker

    DockerFile

    script_to_trigger_code.sh
    - app

     - python_code_to_run.py

我可以通过运行以下命令来构建docker镜像:

 docker build -t my_attempt_to_learn_docker .

然后我将使用它提供的ID#并运行:

docker run -v /Users/myname/Documents/docker_folder f28384723

我不断收到错误

**/bash: run_py_file.sh: No such file or directory**

有人可以帮我解决我在这里缺少的东西吗?我正在努力学习如何正确执行此操作,因为我无法启动和运行我的第一部分代码。 app / python_code_to_run.py 的位置和拼写完全相同。与sh文件相同。

我已经为 CMD [“ run_py_file.sh”] 尝试了上百万种组合,但我只是想不通。我必须丢失要放入代码的 CMD / ENTRYPOINT 部分中的内容的魔术组合。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

WORKDIR添加到指向/src的dockerfile中。您的CMD指令在python映像的默认WORKDIR中执行,可能在根目录下,而不是您的.sh文件中。

答案 1 :(得分:0)

看起来您的主机目录结构中确实没有一个名为run_py_file.sh的文件,但是您在Dockerfile中引用了另一个脚本。

我认为核心问题是working directory defaults to /,但是您的CMD和ENTRYPOINT块假定您位于/src目录中。

尝试在您的dockerfile中添加一个WORKDIR /src块,或者使用一个绝对路径指向在CMDENTRYPOINT块中复制的实际文件。

CMD [ "/bin/sh", "/src/script_to_trigger_code.sh" ]