Комментарии 22
mem_limit: 1000000000 #Позволяем использовать 1Гб памяти
memswap_limit: 2000000000 #Ограничиваем SWAP двумя Гб памяти.
Можно задать проще:
mem_limit: 1gb
memswap_limit: 2gb
Из официальной доки:
The supported units are b, k, m and g, and their alternative notation kb, mb and gb. Decimal values are not supported at this time.
Вместо того чтобы набирать портянку в стиле
docker-compose up -d -f docker-compose-base.yml -f docker-compose-app.yml ...
Можно один раз создать .env файл с содержимым где перечислить все compose файлы
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=docker-compose.shared.admin.yml:docker-compose.shared.base-images.yml:docker-compose.shared.depends.yml:docker-compose.shared.env.yml:docker-compose.dev.build.yml:docker-compose.dev.command.yml:docker-compose.dev.env.yml:docker-compose.dev.labels.yml:docker-compose.dev.networks.yml:docker-compose.dev.ports.yml:docker-compose.dev.volumes.yml
И поднимать всё это классическим docker-compose up -d
Документация: docs.docker.com/compose/reference/envvars/#compose_file
Пример использования: GitHub
.env подцепляется только с текущего каталога, так что можно закостылить структуру каталогов по окружения, переходить в них и из них запускать докер-компоуз с относительным путем к ЯМЛ файлу. Можно? Да. Удобно? Вряд ли.
Ну, либо оборачивать запуск докер-компоуза в баш скрипт. Но тогда возникает вопрос — а почему тогда не обойтись вообще без него? Т.к. по сути докер компоуз это враппер вокруг команд управления докером (docket build, docker run, docker volume/network create etc.). Больше врапперов богу врапперов ?
Делается руками, прекрасно.
Это не является какой-то особенной фичей докер-компоуза.
Что хуже — я сталкивался с ситуацией, когда докер-компоуз игнорирует глобальные настройки докер-демона. Например, это особенно неприятно, когда корп. сеть не в 10-й подсети, а в 172-й.
Типа такого https://github.com/docker/compose/issues/5204
«Don't believe this is a compose issue. Compose just uses docker-py which calls the daemon under the hood, Compose doesn't interact with that file at all.»
Т.е. вопросы к демону, а не к компоузу.
Следующий пример требует версию docker-compose >= 2.4
Выглядит немного по-издевательски, учитывая, что 3.1 вышел раньше 2.4
Фактически — это две разные линейки форматов, каждая со своими "фичами"
Касательно параметра -f — мы ими активно пользуемся но в сочетании с /dev/stdin, чио позволяет генерировать докер-компоуз файл по шаблону той же Jinja, например
По IPv6: teredo, серьезно? Я тоже не рад что ipv6 не популизирован в массы. Получить IPv6 в Киеве можно только в ЦОД или через BGP, что для некоторых большой оверхед. Но если и брать вирт адреса IPv6 то хотя бы у лидеров, а не пойми откуда, разверните tunnelbroker.net клиент на шлюзе, не сравнимое преймущество с teredo. Единственное: если вам нужен outgoing smtp server-server с 25 порта: сразу проходите сертификацию в ЛК, без нее он залочен. Заодно получите футболку по почте бесплатно :)
Несколько малоизвестных возможностей docker-compose