Docker tips: COPY и ADD

Docker tips: COPY и ADD
Photo by Rubaitul Azad / Unsplash

Иногда, просматривая разные Dockerfile, вы можете видеть инструкции COPY или ADD. Они очень похожи, но в 99% случаев вы должны использовать COPY вместо ADD. И вот почему.

COPY и ADD - это инструкции Dockerfile, которые выполняют похожие действия. Они предоставляют возможность скопировать файлы из указанного места внутрь Docker образа.

COPY позволяет только одно - скопировать файлы или каталоги с машины, где собирается образ, в сам образ. И больше ничего.

ADD позволяет сделать все тоже самое, только эта инструкция поддерживает еще 2 исходных места. Во-первых, вы можете использовать URL в качестве источника. Во-вторых, вы можете распаковать tar файл из источника в образ.

В большинстве случаев, если вы используете URL для загрузки zip файла, то после этого вам необходимо выполнить RUN для его распаковки. Если это так, то лучше использовать RUN для запуска curl и распаковки файла, чем использовать ADD и потом RUN. Это уменьшит размер Docker образа.

ADD же лучше использовать когда у вас есть локальный tar файл и его необходимо распаковать внутрь образа:

ADD file.tar.gz /opt

Если же вы просто копируете файлы, то всегда используйте COPY.

Read more

Самохостинг (часть 2) - Динамический роутинг на Keenetic

Самохостинг (часть 2) - Динамический роутинг на Keenetic

Допустим у нас есть роутер Keenetic. Нам нужно, чтоб некоторые сайты грузились через поднятый на нем туннель (это может быть Wireguard, L2TP или даже банальный Socks5 proxy). Например, нас забанил Youtube по нашему внешнему IP адресу 😉, но мы все равно хотим его смотреть, да не на телефоне, а на нормальном

Самохостинг - стиль жизни

Самохостинг - стиль жизни

Я тут и тут писал про свой домашний сервер, но нигде не упоминал, что есть еще один сервер в ДЦ, где хостятся сайтики и кучка еще разных сервисов. Да и времени прошло с момента написания тех статей не мало. Сервер тот остался в другой стране и, как результат, все, что

Мониторинг долгих запросов PostgreSQL в Prometheus

Мониторинг долгих запросов PostgreSQL в Prometheus

Предположим, что у вас есть PostgreSQL (AWS RDS или классический PostgreSQL server), Prometheus, postgres exporter и alertmanager с Grafana. Стоит задача присылать уведомления о том, что в Postgres подвис запрос. Причина и т.п. нас мало интересует. Нужно просто сказать всем, кому положено, что есть проблема и ее нужно решить.

Почему я всё ещё люблю Fish Shell

Почему я всё ещё люблю Fish Shell

В 2017 году я написала о том, как сильно люблю Fish Shell, и спустя 7 лет ежедневного использования, я нашла ещё больше причин для восхищения. Поэтому решила написать новый пост, где соберу старые и новые причины моей любви к этой оболочке. Сегодня я задумалась об этом, потому что пыталась понять,