首页 > 解决方案 > GitLab CI/CD - nginx 容器上的供应商目录

问题描述

我尝试为 symfony 编写 CI/CD,但我的供应商目录有问题。应用程序被正确复制,但我没有供应商。我尝试了各种方法,但没有任何效果。在本地,而不是带有图像名称的变量,我将给出图像名称,一切正常。

我的 .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

码头工人-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

用于 php 的 Dockerfile

FROM php:7.4-fpm

RUN docker-php-ext-install pdo_mysql

RUN pecl install apcu

RUN apt-get update && \
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');" \
    && php composer-setup.php --filename=composer \
    && php -r "unlink('composer-setup.php');" \
    && 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

用于 nginx 的 Dockerfile

FROM nginx

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

在 php 容器中存在供应商目录。Docker-compose 运行,但我的应用程序无法运行: 在此处输入图像描述

标签: phpdocker

解决方案


我错了还是你只是安装作曲家而不执行它?

&& mv composer /usr/local/bin/composer你应该放之后&& composer install --no-interaction


推荐阅读