Как указать образ docker в файле docker-compose с помощью regex - PullRequest
0 голосов
/ 22 октября 2018

У меня есть образ докера, который я создаю с помощью автоматизированного конвейерного задания.

Он называется:

REPOSITORY                      TAG                IMAGE ID        
test-001-com:3000/img           1.23-SNAPSHOT      2f83de9h895e

ПРИМЕЧАНИЕ. TAG меняется ежедневно, поэтому завтра он будет1.24-SNAPSHOT и т. Д. *

Мой вопрос:

Как использовать аргумент "image" в docker-compose для передачи регулярного выражения или чего-то, что я не делаю?необходимо обновлять его каждый раз, чтобы соответствовать тегу.

docker-compose.yml:

services:
  test-001:
    hostname: "test-001"
    container_name: "test-001"
    image: "test-001-com:3000/img:1.23-SNAPSHOT"
    ports:
    - "8000:8000"
version: "2.1"

Приведенный выше docker-compose.yml работает, но я могу заменить:

изображение: "test-001-com: 3000 / img: 1.23-SNAPSHOT "

С

image: "test-001-com: 3000 / img: * - SNAPSHOT " или что-то ?!<- не работает. </p>

1 Ответ

0 голосов
/ 22 октября 2018

Вы не можете этого сделать.image: должен назвать точный тег версии или не иметь тега и использовать подразумеваемую версию ...:latest.В общем, Docker просто не поддерживает это;Нет простого способа поиска доступных изображений по тегу и сопоставлению с регулярным выражением или глобусом оболочки, вы должны знать, что вы ищете.Даже если у вас есть список тегов, нет универсального определения того, что является «самым новым».

Вы пометили это как «kubernetes».Если на самом деле это вопрос Kubernetes, лучший способ сделать это - настроить систему непрерывного развертывания, чтобы обновить для вас развертывание Kubernetes.Kubernetes попытается запустить новые модули с новой версией перед удалением старых, поэтому вы должны получить обновление без простоев.( Helm - это распространенный инструмент для ввода таких параметров; если обновление идет не так, как обычно, оно также поддерживает откат обновления.)

В вашем примере используется Docker Compose.Поле image: является одним из мест, где работает подстановка переменных , поэтому вы можете установить

image: "test-001-com:3000/img:${IMAGE_VERSION:-latest}"

, а затем установить IMAGE_VERSION в качестве переменной среды или в файле .envв том же каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...