2015-04-12 1 views
1

Использование this official Python image Я пытаюсь предоставить ряд аргументов команде docker.run.Два аргумента apt-get для команды запуска docker не работают

docker run -it --rm --name myserver -v "$PWD":/usr/src/myapp 
-w /usr/src/myapp python:3-slim apt-get update && apt-get install libpq-dev -y 

Сначала он показывает выход apt-get update, но затем он возвращается:

apt-get: command not found 

Но как-то это правильно выводит START, то APT-получить обновление вывода и NEXT перед броском ошибку:

docker run -it --rm --name myserver -v "$PWD":/usr/src/myapp 
-w /usr/src/myapp python:3-slim echo "START" && apt-get -y update && echo "NEXT" && apt-get install libpq-dev -y 

Как будто он не может выполнить более одной команды apt-get. Почему echo работает, а второй apt-get нет?

ответ

3

Для того, чтобы убедиться, что эти команды выполняются в контексте Docker, вы можете связать их в Баш сессии:

docker run -it --rm --name myserver -v "$PWD":/usr/src/myapp \ 
-w /usr/src/myapp python:3-slim \ 
/bin/bash -xec 'apt-get update && apt-get install libpq-dev -y' 

Таким образом, то && интерпретируется правильной оболочки (тот, выполненный в контейнере), а не тот, который выполняет docker run.

Но лучше было бы определить новое изображение с новым файлом Docker, имеющим эти команды в директивах RUN, чтобы иметь контейнер с libpq-dev, готовый к использованию.

Смежные вопросы