php - 使用 gitlab-ci.yml 构建 PHP 镜像
问题描述
当我将代码推送到 gitlab.com 时,我想构建一个 Docker 映像。
这工作正常,在一定程度上......
gitlab-ci.yml (1)
image: php:7.4
cache:
paths:
- vendor/
before_script:
- echo "Prep me"
- apt-get update
- apt-get install -y --no-install-recommends zip unzip gnupg2
- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
- php composer-setup.php
- php -r "unlink('composer-setup.php');"
- curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
- echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
build:
script:
- echo "Build me"
- composer install
- yarn install
但是没有任何东西被添加到 Gitlab 注册表中。因此,我尝试将其添加到构建中,但 docker 不是公认的命令。
gitlab-ci.yml (2)
- docker pull $CI_REGISTRY_IMAGE:latest || true
- docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE:latest .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE:latest
我原以为立即启动 PHP docker 映像应该很简单,但这似乎很困难——除非我遗漏了什么?
解决方案
原因是你的 GitLab CI 的基础镜像现在是php:7.4
,它没有 docker 命令。
为了实现运行 docker 命令,您需要使用类似的图像
image: docker:19.03.8
推荐阅读
- ads - 使用 Google Ads Api 获取广告报告
- javascript - ReactJS部署应用程序错误无法复制到剪贴板:命令失败:xsel --clipboard --input
- android - xamarin.Android 应用程序中的 .cs 和 .fs 文件有什么区别?
- javascript - 如何使用 XMLHttpRequest() 正确循环 HTTP 请求?
- amazon-web-services - 在哪里可以找到提供有关 ec2 关闭信息的日志
- jquery - JQuery下拉菜单与Bootstrap 4串联,子元素不扩展
- html - 如何在 html 中从 C:\ 到 D:\ 进行相对寻址
- javascript - 如果没有 jQuery,我如何有选择地删除数组中存在的元素?
- r - ROC 函数错误“预测变量必须是数字或有序的。”
- scala - 用 scalamock 部分模拟一个类