Докер / бин / ш: 1:: не найден miniconda3 - PullRequest
0 голосов
/ 05 сентября 2018

Когда я пытаюсь собрать следующий Dockerfile с командной строкой docker build -t my-image-name .

FROM continuumio/miniconda3
EXPOSE 8880

# Set working directory
WORKDIR /my-workingdir

# Add scripts to docker workdir
ADD Dockerfile .
ADD environment.yml .
ADD all-my-python-files.py .

# Update & installation of linux packages
RUN apt-get update -y && \
    apt-get install -y libgl1-mesa-glx apt-utils && \
    apt-get install -y openssh-server && \
    apt-get install -y net-tools
# Conda update and creation of environment
RUN conda update conda \
    && conda env create -f environment.yml \
# Activation of environment
    && echo "source activate environment" > ~/.bashrc

# Mount volumes
VOLUME /my-workingdir/Input

CMD ["python" , "execute_given_python_file.py"]

Я получаю ошибку во время сборки: /bin/sh: 1: : not found Я создаю образ в macOS Hihg Sierra Version 10.13.6, но когда я собираю образ в среде CentOS Linux (внутри другого контейнера Docker), Dockerfile работает отлично. Версия Docker, которую я использую на Mac:

  • Клиент:
    • Версия: 18.06.1-ce
    • Версия API: 1.38
  • Сервер:
    • Двигатель:
    • Версия: 18.06.1-ce
    • Версия API: 1,38 (минимальная версия 1.12)

Я пробовал следующее:

  1. Переустановите Docker на Mac
  2. apt-get update (без -y)
  3. sudo apt-get update
  4. Не обновлять
  5. Не создавать среду conda
  6. Не CMD

Но я все еще получаю ошибки. Как решить проблему?

UPDATE: Последние строки перед появлением сообщения об ошибке во время построения изображения:

Получить: 6 http://security.debian.org/debian-security stretch / updates / main amd64 Пакеты [490 кБ] Получить: 7 http://deb.debian.org/debian stretch-updates / main amd64 Packages [5476 B] Получите: 8 http://deb.debian.org/debian растягивающихся / основных пакетов amd64 [9500 кБ] Получено 10,3 МБ за 2 с (4564 кБ / с) Чтение списков пакетов ... / bin / sh: 1:: не найдено

Docker возвращает ненулевой код: 127

Чтобы повторить ошибку, я включаю скрипт на python и среду yml.

Сценарий Python all-my-python-files.py протестирован во время ошибки:

# Name of file: all-my-python-files.py
import openpyxl
import requests
import datetime as dt
import time 
from pandas.io.json import json_normalize
import argparse
import os
import pandas as pd
print("At this point, libraries should be imported")
print("End of python script")

Файл environment.yml:

name: environment
channels:
  - statiskit
  - anaconda
  - conda-forge
  - defaults
dependencies:
  - asn1crypto=0.24.0
  # For space the following line are not separated into single lines:

- cffi = 1.11.5 - chardet = 3.0.4 - криптография = 2.3.1 - et_xmlfile = 1.0.1 - идна = 2,7 - jdcal = 1,4 - openpyxl = 2,5,5 - pycparser = 2,18 - pyopenssl = 18.0.0 - pysocks = 1.6.8 - запросы = 2.19.1 - urllib3 = 1,23 - CA-сертификаты = 2018.8.24 - openssl = 1.0.2p - время = 1,7 - блас = 1,0 - certifi = 2018.8.24 - intel-openmp = 2018.0.3 - libedit = 3.1.20170329 - libffi = 3.2.1 # - libgfortran = 3.0.1 # Не работает в Linux - мкл = 2018,0,3 - mkl_fft = 1.0.4 - mkl_random = 1.0.1 - ncurses = 6.1 - NumPy = 1,15,1 - numpy-base = 1.15.1 - панды = 0,23,4 - пункт = 10.0.1 - python = 3.7.0 - python-dateutil = 2.7.3 - pytz = 2018,5 - readline = 7.0 - setuptools = 40.2.0 - шесть = 1.11.0 - sqlite = 3,24,0 - тк = 8,6,8 - колесо = 0.31.1 - xz = 5.2.4 - zlib = 1.2.11 # - libcxx = 4.0.1 # Не работает в Linux # - libcxxabi = 4.0.1 # Не работает в Linux - пункт: - datetime == 4.2 - zope.interface == 4.5.0 префикс: / Users / Elias / miniconda3 / envs / xlshp

1 Ответ

0 голосов
/ 13 сентября 2018

Как упоминал @Charler Duffy, проблема была связана с невидимым концом строк в скрипте. Каким-то образом написание кода следующим образом решило проблему:

RUN apt-get update
RUN apt-get install -y libgl1-mesa-glx apt-utils openssh-server net-tools
# Conda update and creation of environment
RUN conda update conda && \
    conda env create -f environment.yml && \
    # Activation of environment and correction of bash
    echo "source activate xlshp_env" > ~/.bash

Таким образом, когда все пакеты linux были установлены в одной строке, Dockerfile мог создать образ.

...