TGViewer
Вова Лебедев Вова Лебедев @hacker_volodya · 1.99K subscribers
Post #372 1.65K
Подкладываем файлы в докер в remote context

Допустим, есть вот такая структура папок:

my-cool-project-dev
|— docker-compose.yml
|— config.yml
|— my-cool-project
|— Dockerfile


Есть основная репа my-cool-project, где всё чисто и красиво, а есть dev-окружение в отдельной репе, где мы тестим продукт в нужном нам окружении.

Как подложить конфиг в контейнер my-cool-project?


Самое популярное решение: добавить в компоуз маунт ./config.yml:/config.yml:ro. Загвоздка в том, что моё тестовое окружение подразумевает запуск не в локальном докере, а на выделенной тачке, к которой клиентский докер подключён через remote context (рекомендую изучить, невероятно полезная фича). Из-за него все маунты будут происходить не с локальной тачки, а с тачки, где крутится докер демон, т.е. с ремоут контекста.

Поэтому, если вы хотите запустить в компоузе какой-то готовый образ, например, traefik, то конфиг можно подложить в новый слой образа: делаем папку traefik, кладём в неё конфиги и Dockerfile с директивами FROM traefik и COPY config.yml /config.yml, а в компоузе прописываем build: traefik.

Однако, в рассмотренном примере уже есть Dockerfile, который мы не хотим менять, но от которого не можем как-то органично отпочковаться, чтобы подложить конфиг. Не, можно конечно каких-нибудь build.sh скриптов понаписать, но мы ж хакеры, да?

Предлагаю вашему вниманию вот такой компоуз:
services:
app:
build:
context: my-cool-project
additional_contexts:
config: ./config
dockerfile_inline: |
# syntax = devthefuture/dockerfile-x
FROM ./Dockerfile
COPY --from=config /config.yml /config.yml


В папку my-cool-project-dev/config мы кладём наши отладочные конфиги, добавляем их как дополнительный контекст для buildkit, и наконец, с помощью кастомного докерфайл-синтаксиса dockerfile-x, создаём инлайн враппер для докерфайла, в котором инклудим оригинальный докерфайл и добавляем копирование конфига в образ.

Кстати, через механизмы configs и secrets сейчас тоже нельзя с локальной тачки прокинуть ничего в ремоут контекст, но совсем недавно появился пулл-реквест с капибарой, который это фиксит (очень надеюсь, что его примут).
  • 🔥 4
  • 🤩 2
  • 👍 1
More from @hacker_volodya
  1. Mar 20, 2025Вышел разбор моего демо-таска на T-CTF 2025. Ещё несколько моих тасков можно будет заценит…
  2. Feb 25, 2025Dreamhack Invitational Обратил внимание на развивающуюся корейскую платформу для CTF-трени…
  3. Jan 6, 2025https://psi3.ru/blog/swl01u/
  4. Oct 23, 2024Потестировал новую модель Антропика, где агенты могут управлять компьютером, используя экр…
  5. Jul 23, 2024samply — невероятно простой профайлер Иногда бывает нужно разобраться в причинах, почему к…
  6. Jun 29, 2024No, LLM Agents can not Autonomously Exploit Zero-day Vulnerabilities (yet) Недавно стала р…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →