首页 > 解决方案 > 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

为什么会这样,我该如何解决?

标签: pythondockertensorflowdocker-compose

解决方案


来自文档

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"]

推荐阅读