python - tensorflow docker-compose中没有apt?
问题描述
我需要使用旧版 tensorflow 来编译项目。为此,我们设置了一个 docker-compose 文件:
version: "3.8"
services:
exercise:
build:
context: .
container_name: practical_4
environment:
DATASET: cifar
volumes:
- "./:/app/"
command: bash run.sh
我的 Dockerfile 看起来像这样:
FROM tensorflow/tensorflow:1.15.2
WORKDIR /app
COPY . /app/
RUN ['apt', 'install', 'python-pip']
#RUN ['pip', 'install', 'matplotlib']
最后是运行脚本:
#!/bin/bash
echo "$DATASET"
# Install dependencies
pip install matplotlib
pip install numpy
pip install pickle
if [ $DATASET = "cifar" ]; then
python cifar_cnn.py
else
python mnist_cnn.py
fi
现在,当运行docker-compose up
程序失败时。对于某些命令 apt 找不到..?
Step 4/5 : RUN ['apt', 'install', 'python-pip']
---> Running in 39c9c48240b5
/bin/sh: 1: [apt,: not found
ERROR: Service 'exercise' failed to build: The command '/bin/sh -c ['apt', 'install', 'python-pip']' returned a non-zero code: 127
为什么会这样,我该如何解决?
解决方案
来自文档:
exec 形式被解析为 JSON 数组,这意味着您必须在单词周围使用双引号 (") 而不是单引号 (')。
因此,如果您想使用 exec 形式,请尝试:
RUN ["apt", "install", "python-pip"]
还有shell形式:
RUN apt install python-pip
这种形式在你的情况下会更合适,因为当你想在不同的(不是/bin/sh -c
)shell中运行命令时通常使用 exec 形式,例如:
RUN ["/bin/bash", "-c", "apt install python-pip"]
推荐阅读
- sql-server - 如何根据 category_id USING SQL SERVER 从表中选择值
- corda - 在重新部署的 Corda Enterprise App 上发布更新状态
- react-native - React Native App 作为 Tcp 客户端
- scala - 如何使用scala为spark数据框中的列添加前缀和后缀值
- php - 如何在 Web 服务器上显示 Plivo 短信文本?
- php - Laravel5.6 phpexcel包安装报错
- python - 清理python中的列
- sql-server - 如何在 Angular 6 中使用 Sql 服务器连接?
- python - Python从列表中删除常用词
- jquery - 主干视图中的多个 jQuery 对象