Отладка Dockerfile
При написании и отлаживании докерфайлов приходится постоянно пересобирать образы. В промежутках между сборками время улетает впустую и сильно отвлекаешься. Как Вы решаете этот вопрос?
Ответы (1 шт):
Способ 1
Один из способов оптимизировать этот процесс -- использовать volume. Вы прокидываете volume из контейнера наружу и все изменения автоматически применяются как только Вы их вносите в код и стартуете контейнер. Конечно, после того как Вы откажитесь от volume, могут возникнуть side-эффекты. Но первые этапы написания dockerfile будут сильно ускорены.
Способ 2
Вторая оптимизация -- это написание компоузов, которые не требуют писать огромных строк с параметрами. Это удобнее читать и воспринимать. Пример:
version: '3'
services:
service:
VAULT_ENV=LOCAL
env_file:
- ../${VAULT_ENV_FILE}
build:
context: ..
dockerfile: "deployments/Dockerfile"
network_mode: host
volumes:
- ./:/app
После того, как основная часть dockerfile отлажена, можем сделать так:
version: '3'
services:
grader-v2-student-ui:
VAULT_ENV=LOCAL
env_file:
- ../${VAULT_ENV_FILE}
build:
context: ..
dockerfile: "deployments/Dockerfile"
network_mode: host
Способ 3
Не стоит забывать ещё про один инструмент. После того, как Вы собрали контейнер, в него можно зайти:
docker exec -it <docker-container-id> bash
Внутри можно увидеть Ваш проект и получить немного дополнительной информации
Способ 4
Просмотр логов
docker logs <container-id>
Данный способ хорошо работает в связке со способом 1.
Способ 5 (абстрактный)
Классический подход с локализацией ошибки. Локализуем ошибку и делаем минимальный воспроизводимый пример. При этом, лучше написать сначала простой пример и затем его усложнять до нужного Вам примера. В противном случае, Вы можете застопориться на каком-нибудь не очевидном моменте и долго на нём сидеть.