簡體   English   中英

Apache項目的Gitlab CI

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM