Предположим, у меня есть дерево проекта Elixir, организованное так:
$ tree .
.
├── apps
│ ├── a
│ │ ├── ...
│ │ └── mix.exs
│ ├── b
│ │ ├── ...
│ │ └── mix.exs
│ └── c
│ ├── ...
│ └── mix.exs
├── mix.exs
└── mix.lock
(несвязанные файлы удалены)
Файл Docker, который я написал для этого проекта, выглядит примерно так:
FROM bitwalker/alpine-elixir-phoenix:latest
ENV MIX_ENV=prod
# Elixir deps
# FIXME: do not hardcode apps/ subdirectories, use wildcards somehow
# FIXME: copy everything in one step somehow
ADD apps/a/mix.exs apps/a/
ADD apps/b/mix.exs apps/b/
ADD apps/c/mix.exs apps/c/
ADD mix.exs mix.lock ./
RUN mix local.hex --force && mix deps.get && mix deps.compile
<skipped>
ADD . .
RUN mix compile && mix phx.digest
CMD [ "mix", "phx.server" ]
Есть ли способ ДОБАВИТЬ или КОПИРОВАТЬ все apps/*/mix.exs
за один шаг, сохранив их структуру каталогов (чтобы каждый apps/foo/mix.exs
заканчивался $WORKDIR/apps/foo/mix.exs
)?
ВНасколько я знаю, нет никакого очевидного способа сделать то, что я хочу.Напримерговоря что-то вроде ADD apps/*/mix.exs mix.exs mix.lock ./
просто копирует все в WORKDIR (и файлы перезаписывают друг друга).
Может быть, есть какой-то неочевидный способ?