Это поведение по умолчанию docker run
и аналогичных команд: оно вытянет изображение, если у вас его еще нет, но если оно у вас есть, оно предполагает, что у вас уже есть верное.В этом случае, поскольку изображение не указано непосредственно в файле docker-compose.yml
, у вас не так много ярлыков;Вы можете написать что-то вроде
sed -ne 's@^FROM \(.*/.*\)@\1@p' | xargs docker pull
, чтобы вытянуть все, перечисленные в строке FROM
, но не базовые изображения для многоэтапных сборок (имена изображений должны содержать косую черту);это возможно излишне.
Я видел несколько предложений, чтобы избежать использования тегов latest
;это одна из нескольких важных причин (вы также не контролируете основную версию предварительно упакованного программного обеспечения и не получите последовательного развертывания на установках с несколькими узлами).Если у вас есть настройка непрерывной интеграции, создающая часто меняющееся изображение, вы можете пометить его отметкой даты или идентификатором сборки и поместить его в строку FROM
.Вы можете использовать ARG
, чтобы сделать это более настраиваемым, и передать его через docker-compose.yml
, в конечном итоге возвращаясь к переменной среды.
I 'Я предполагаю, что вы, вероятно, получите оболочку для скрипта оболочки, несмотря ни на что, и если у вас установлена версия latest
, она может выглядеть как
#!/bin/sh
set -e
docker pull registry.website.com/base-image:latest
docker build -t ... .
docker-compose up -d