Docker Как сохранить и восстановить WORKDIR в Dockerfile? - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть Dockerfile ИЗ изображения.Я хочу изменить его и добавить некоторые операции с файлами, которые будут относиться к другому WORKDIR, чем тот, который задан образом FROM.Поэтому я хочу сохранить WORKDIR в переменной до того, как я изменю WORKDIR, и восстановить WORKDIR из этой переменной после завершения моих команд.Как это сделать?

Требуемый результат:

Псевдокод Dockerfile:

FROM centos:7
some original commands
some original commands
...
var=WORKDIR #save WORKDIR <== how to do that?

WORDIR /my/path/
my commands
my commands

...
WORKDIR = var # restore path that was before <== how to do that?

Ответы [ 3 ]

0 голосов
/ 17 апреля 2019

Добавление к ответу WSMathias9:

Если WORKDIR не было изменено используемым базовым изображением, по умолчанию всегда используется /, в вашем случае вы можете просто установить его на /, когда закончите, так как это значение по умолчанию для centos изображение

Но, если вы используете WORKDIR вместо cd, просто используйте cd в RUN

Вместо, например:

FROM centos:7

WORKDIR /folder
RUN mycommand

Do:

FROM centos:7

RUN cd /folder && mycommand
0 голосов
/ 17 апреля 2019

Вы можете создать переменную окружения.

ENV WORKDIR=/my/path/
WORDIR $WORKDIR
0 голосов
/ 17 апреля 2019

если вы пытаетесь сохранить WORKDIR из базового образа, это невозможно

WORKDIR будет иметь значение только в том случае, если вы установите его в том же файле Docker.

если вы пытаетесь использовать другой рабочий каталог для разных команд:

Псевдокод Dockerfile:

FROM centos:7
some original commands
some original commands
...
ARG PATH1=/path1
ARG PATH2=/path1

my commands
my commands

WORKDIR PATH1
my commands
my commands

WORKDIR PATH2
my commands
my commands

WORKDIR PATH1
my commands
my commands

...
WORKDIR PATH1 # restore path that was before <== how to do that?
...