Пейджер

🌍 Добрай раніцы! 🇧🇾

TL;DR
  • :latest в Docker — стрельба по ногам
  • pull может притянуть любую версию
  • Окружение и CI/CD ломаются
  • Используйте конкретные версии образов
🌍 Добрай раніцы! 🇧🇾

Уверен что большинство используют docker 🐳 в своей работе, и уверен что вы не раз писали :latest в версии того или иного образа. Но если подумать то latest это стрельба по ногам.

По дефолту, обычно так ⤵️:

services:
  db:
    image: postgres:latest


Логика в этом проста, latest ну это же последнее, там самый жир, все фишечки и плюшечки.

И если сегодня у нас на сервере postgres с версией 17, то завтра pull может притянуть новую версию. Ожидаемо? Не думаю 🚩… Как вариант можно встретить аля что-то такое:

FATAL:  database files are incompatible with server
DETAIL:  The database cluster was initialized with PG_VERSION 14,
but the server was compiled with PG_VERSION 15.


Какие минусы я вижу
👀 :

Непредсказуемость: Каждый pull может притянуть новую версию.
Сложно воспроизвести окружение: У тебя баги нет, а у коллеги да.
CI/CD: вчера всё собиралось, сегодня нет. Печально.

✏️ Ну и логично было бы лучше делать так:

myapp:v1.4.2
postgres:17.5
python:3.12-slim


💰 Мини бонус:

Вывести список всех локальных Docker-образов на вашей машинке.

docker images | grep latest

// Output
REPOSITORY    TAG        IMAGE ID      CREATED      SIZE
postgres      latest     efg45678      5 days ago   376MB
redis         latest     xyza9876      1 day ago    113MB


Полезности

🟠Если не указать версию, используется :latest по умолчанию.
🟠Старайтесь чтобы все ваши решения были детерминированные.

💬 Делитесь своим мнением в комментариях👇! Если вам понравился пост, не забудьте поставить лайк! 👍

#DOCKER #DevOps #BESTPRACTICES
Медиа 1
Хотите больше таких постов?
Подпишитесь на канал и читайте продолжение в Telegram.
Подписаться на @ivanchikovitclub Открыть пост в Telegram