kentuck1213
@kentuck1213

В чем отличие описание деплой в docker-compose command и ENTRYPOINT?

docker-compose.yml:
...
    web:
        restart: always
        build: .
        image: web
        command: bash -c "
                 python manage.py collectstatic --no-input &&
                 python manage.py migrate &&
                 gunicorn config.wsgi -b 0.0.0.0"
        volumes:
            - ~/myjob_files/static:/static
            - ~/myjob_files/uploads:/uploads
            - ~/myjob_files/nginx:/nginx
        expose:
            - "8000"
        links:
            - db
...

.gitlab-ci.yml:
deploy:
    stage: deploy
    script:
        - docker-compose down
        - docker-compose up -d
    only:
        - master

Но так же заметил что некоторые задают ENTRYPOINT ["/docker-entrypoint.sh"] и уже в этом файле описывают деплой. Не могу понять, в чем отличие ? так по мне мой вариант он более лаконичней.
  • Вопрос задан
  • 5967 просмотров
Пригласить эксперта
Ответы на вопрос 1
@qq1
ENTRYPOINT определяет команду которая будет выполнятся при старте контейнера.
CMD определяет аргументы которые будут переданы в ENTRYPOINT.
Докер по-умолчанию имеет ENTRYPOINT равный /bin/sh -c
В свою очередь, command параметр в docker-compose.yml переопределяет CMD из докерфайла.
Вот и все различия.
По поводу лаконичности, то что имеет отношение к самому контейнеру и то что не зависит от окружения в котором запускается контейнер логичнее убрать в Dockerfile/entrypoint.sh дабы избежать дублирования в случае нескольких docker-compose.yml
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы