[英]Gitlab CI for apache project
最近我開始在 Gitlab 上工作,作為學習的一部分,我將重點放在 Gitlab CI 流程上,以用於我未來的項目。 我已經安裝了 gitlab runner 和 executor 作為 docker。 到這里一切都很好。 我有一個包含 HTML 頁面的網站,我將其部署在默認的 apache web 服務器路徑 (/var/www/html) 中。 這是我用於構建的 .gitlab-ci.yml 文件:
image: centos:7
test:app:
script:
- yum install -y httpd git ssh
- cp -R HTML/* /var/www/html/
到這里為止,構建正在正常進行,但是為了使 apache 啟動並運行測試,我無法做到這一點。 當我在腳本中添加此命令時,例如:
image: centos:7
test:app:
script:
- yum install -y httpd git ssh
- cp -R HTML/* /var/www/html/
- sudo apachectl start or /usr/sbin/httpd start
...我收到“找不到命令”的錯誤。
如何制作 apache 實例並進行測試?
Docker 容器默認以 root 身份運行,因此無需 sudo,而且我不相信來自 Docker Hub 的 centos 映像包含該工具。
將進程作為容器運行時,您不會通過 systemd 或任何其他 init 系統啟動它,您需要將其作為前台進程生成,以便 docker 附加到該進程。 它變成 pid 1,它是唯一啟動的進程(沒有 ssh 守護進程或您可能期望的其他進程),當它退出或被殺死時,容器將停止。 根據已經創建的 Docker Hub 上的存儲庫,使用 apache 執行此操作的方法是以下 Dockerfile 條目:
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
這是一個非常古老的問題,但我想答案不會受到傷害。
最近,我發現了如何在 gitlab-ci-job 中使用 apache 服務來提供存儲庫中的 html 文件。 訣竅是在您的 gitlab-ci-file 中啟用FF_NETWORK_PER_BUILD
,並為 apache 服務器使用自定義 docker 容器,以便它在 builds-directory 中查找它需要服務的文件。
我為此寫了一篇博文: Running apache and php-fpm as services in a gitlab-ci job ,包含所有細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.