php - 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
解决方案
我错了还是你只是安装作曲家而不执行它?
&& mv composer /usr/local/bin/composer
你应该放之后&& composer install --no-interaction
!
推荐阅读
- python - 填充数组的有效方法
- javascript - 如何使用条件道具接口定义 React 组件?
- go - 在终端中工作的命令不适用于 go exec.Command
- javascript - 打字稿数字或数字枚举类型?
- c++ - 寻找数字的下一个回文,得到 SIGABRT 错误
- laravel - laarvel 项目部署到 cpanel 的问题
- python - 如何创建没有用户名但使用电子邮件和 @classethod 的 AbstractUser?
- shell - 跳过输入参数的第一行
- tags - 如何在文档模块的 Odoo 13 中隐藏“标签”?并且仍在使用它
- php - PhpStorm:有没有办法使用内联 PHPDoc 注释在 return 语句上强制类型?