GitLab CI / CD — каталог поставщиков в контейнере nginx

#php #docker

#php #docker

Вопрос:

Я пытаюсь написать CI / CD для symfony, но у меня проблема с каталогом поставщиков. Приложение скопировано правильно, но у меня нет поставщика. Я пробовал разные способы, но ничего не работает. Локально, поскольку вместо переменных с именем изображения я буду указывать имя изображения, все работает нормально.

My .gitlab-ci.yml

 image: tiangolo/docker-with-compose
services:
  - docker:dind

variables:
  DOCKER_DRIVER: overlay2
  IMAGE_TAG: $CI_REGISTRY_IMAGE/demo:$CI_COMMIT_REF_NAME
  IMAGE_PHP_PROD: $CI_REGISTRY_IMAGE/demo:$CI_COMMIT_SHA
  IMAGE_NGINX_PROD: $CI_REGISTRY_IMAGE/demo-nginx:latest
  VERSION: $CI_COMMIT_SHA

stages:
  - build
  - deploy
    
before_script:
  - apk add --no-cache python3 python3-dev py3-pip libffi-dev openssl-dev gcc libc-dev make
  - docker login -u $CI_USER -p $CI_PASSWORD registry.gitlab.com
  
# build:
#   stage: build
#   script:
#     - docker build --pull -t $IMAGE_TAG deploy
#     - docker push $IMAGE_TAG

production images:
  stage: build
  script:
    - docker build . -f deploy/php/Dockerfile -t $IMAGE_PHP_PROD
    - docker push $IMAGE_PHP_PROD
    - docker build . -f deploy/Dockerfile-nginx-prod -t $IMAGE_NGINX_PROD
    - docker push $IMAGE_NGINX_PROD

pull:
  stage: deploy
  tags:
    - prod
  script:
    - docker pull $IMAGE_PHP_PROD
    - docker pull $IMAGE_NGINX_PROD

production:
  stage: deploy
  tags:
    - deploy
  before_script:

  script:
    - docker-compose -f deploy/docker-compose.yml up -d
  

docker-compose.yml

 version: '3'
services:
  nginx:
    container_name: sf_nginx
    image: $IMAGE_NGINX_PROD
    restart: on-failure
    ports:
    - '81:80'
    depends_on:
      - php

  php:
    container_name: sf_php
    image: $IMAGE_PHP_PROD
    restart: on-failure
    user: 1000:1000
  

Dockerfile для php

 FROM php:7.4-fpm

RUN docker-php-ext-install pdo_mysql

RUN pecl install apcu

RUN apt-get update amp;amp; 
apt-get install -y 
libzip-dev

RUN docker-php-ext-install zip
RUN docker-php-ext-enable apcu

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 
    amp;amp; php composer-setup.php --filename=composer 
    amp;amp; php -r "unlink('composer-setup.php');" 
    amp;amp; mv composer /usr/local/bin/composer

WORKDIR /usr/src/app

COPY --chown=1000:1000 ./ /usr/src/app

RUN PATH=$PATH:/usr/src/apps/vendor/bin:bin
  

Dockerfile для nginx

 FROM nginx

ADD ./ /usr/src/app
ADD ./deploy/nginx/default.conf /etc/nginx/conf.d/default.conf
  

В контейнере php существует каталог поставщиков. Docker-compose запущен, но мое приложение не работает:
введите описание изображения здесь

Ответ №1:

Я ошибаюсь или вы просто устанавливаете composer, не выполняя его?

После amp;amp; mv composer /usr/local/bin/composer вы должны поставить amp;amp; composer install --no-interaction !

Комментарии:

1. Вы правы: D Глупая ошибка, слишком много времени я смотрю на терминал: D Спасибо 🙂