docker:latest
services:
- docker:dind
stage: build
script:
- docker build -t registry.gitlab.com/ko4a/moped24:latest -f infra/php/Dockerfile .
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
- docker push registry.gitlab.com/ko4a/moped24:latest
Внутри докерфайла есть инструкция:
RUN chown -R www-data:www-data /var/www \
&& chmod -R 775 /var/www/symfony \
&& usermod -u 1000 www-data \
&& composer install
но на следующих джобах по какой то причине в контейнере нет vendor
phpstan:
stage: analyze
image: registry.gitlab.com/ko4a/moped24:latest
script:
- ls
- cd vendor && ls
- php vendor/bin/codecept build
- vendor/bin/phpstan analyse -c phpstan.neon --ansi --memory-limit=-1
Подскажите, пожалуйста, с чем может быть связано ?) .dockerignore в проекте нет
Ты в какой папке делаешь composer install?
Проблема может быть связана с тем, что при выполнении composer install в Dockerfile, зависимости устанавливаются в контексте сборки образа, а не в итоговый образ. Вместо того, чтобы выполнять composer install в Dockerfile, вы можете добавить следующую строку в ваш GitLab CI/CD pipeline: yaml script: - docker run --rm -v $(pwd):/app composer install Это запустит контейнер Composer, который установит все зависимости прямо в вашем рабочем каталоге на хосте. Затем вы можете скопировать этот каталог в ваш Docker образ. Если вы все еще хотите установить зависимости в Dockerfile, убедитесь, что вы добавили команду COPY . /var/www/symfony перед composer install. Это скопирует ваш текущий рабочий каталог (включая composer.json и composer.lock) в образ перед установкой зависимостей. Также убедитесь, что вы используете правильный путь для запуска phpstan. Возможно, вы должны использовать ./vendor/bin/phpstan вместо vendor/bin/phpstan.
А зачем ставить зависимости путем запуска контейнера с bind mount, чтобы потом копировать их с хоста в образ?
А какое ваше предложение?
Писать composer install прямо в Dockerfile
Обсуждают сегодня