繁体   English   中英

GitLab CI/CD - nginx 容器上的供应商目录

[英]GitLab CI/CD - vendor directory on nginx container

我尝试为 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

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

用于 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 容器中存在 vendor 目录。 Docker-compose 运行,但我的应用程序不工作: 在此处输入图片说明

我错了还是你只是安装了 composer 而没有执行它?

&& mv composer /usr/local/bin/composer你应该把&& composer install --no-interaction

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM