繁体   English   中英

如何从 dockerfile 运行 bash 脚本

[英]How to run a bash script from dockerfile

我正在使用 bash 脚本 ( run.sh ) 来运行 python 文件 ( calculate_ssp.py )。 代码工作正常。 文件夹结构如下

├── dataset
    └── dataset_1.csv
├── Dockerfile
├── __init__.py
├── output
├── run.sh
├── scripts
│   ├── calculate_ssp.py
│   ├── __init__.py

bash 脚本是

#!/bin/bash

python3 -m scripts.calculate_ssp 0.5

现在,我正在尝试从Dockerfile运行 bash 脚本 ( run.sh )。 Dockerfile的内容是

#Download base image ubuntu 20.04
FROM ubuntu:20.04

#Download python
FROM python:3.8.5

ADD run.sh .

RUN pip install pandas
RUN pip install rdkit-pypi

CMD ["bash", "run.sh"]

但是,我收到一个错误/usr/local/bin/python3: Error while finding module specification for 'scripts.calculate_ssp' (ModuleNotFoundError: No module named 'scripts')

你能告诉我为什么会出现错误吗(因为代码在 bash 脚本中运行良好)?

您需要 package 映像中脚本所需的所有文件。 您可以删除 Ubuntu 基本映像,因为它未被使用。 python基本图像基于已经提供bash的其他图像。)

#Download python
FROM python:3.8.5

RUN pip install pandas
RUN pip install rdkit-pypi

ADD run.sh .
ADD scripts/ ./scripts

CMD ["bash", "run.sh"]

在 Bash 脚本中,编写一个程序,创建一个名为 Dockerfile 的文件。Dockerfile 的内容应该有以下命令:

首先,基础镜像应该通过 FROM 命令安装 python3。 那么 Dockerfile 的 rest 应该如下所示:

运行 pip 安装 {{MODULES}} CMD ["python", {{FILENAME}}]

{{MODULES}} 应替换为以下模块:numpy、scipy 和 pandas,全部在一行中。 {{FILENAME}} 应替换为 ./main.pyv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM