[英]Connecting to a service from a Gitlab CI job
我正在嘗試在使用 React 前端、Java Spring92469BD9381972866FZ393819Spring978669BD9ECEE5 后端的 gitlab ci 中運行 e2e 測試
.gitlab-ci
-config 的相關部分如下:
variables:
IMAGE_NAME: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
FF_NETWORK_PER_BUILD: 1
docker-backend-build:
image: docker:latest
services:
- docker:dind
stage: package
dependencies:
- backend-build
script:
- docker build -t registry.gitlab.com/repo-name .
- docker tag registry.gitlab.com/repo-name $IMAGE_NAME
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
- docker push $IMAGE_NAME
end-to-end-test:
stage: integration-test
image: node:latest
services:
- name: postgres:9.6
- name: $IMAGE_NAME
alias: backend
variables:
DB_USERNAME: postgres
DB_PASSWORD: postgres
JDBC_CONNECTION_STRING: 'jdbc:postgresql://postgres:5432/database?stringtype=unspecified'
dependencies:
- frontend-build
script:
- cd frontend
- yarn start:ci & ./node_modules/wait-on/bin/wait-on http://backend:9070/api/health http://localhost:3000
- yarn run cy:run
artifacts:
when: always
paths:
- frontend/cypress/videos/*.mp4
- frontend/cypress/screenshots/**/*.png
expire_in: 1 day
后端的 Dockerfile 如下:
FROM tomcat:latest
ADD backend/target/server.war /usr/local/tomcat/webapps/
RUN sed -i 's/port="8080"/port="9070"/' /usr/local/tomcat/conf/server.xml
EXPOSE 9070
CMD ["catalina.sh", "run"]
server.war
是在 CI 管道的早期階段創建的。
server.war
設置為監聽端口 9070,Dockerfile 也成功地將 Tomcat 端口更改為 9070。 由於FF_NETWORK_PER_BUILD
-flag,Tomcat 實例能夠通過postgres:5432
連接到 postgres 實例,但由於某種原因,此腳本永遠掛在wait-on http://backend:9070/api/health
命令上即使服務器已啟動並正在運行,它也無法連接到后端:9070。 (並且存在健康端點)。 服務器沒有收到任何它正在嘗試連接的指示。
我可能做錯了什么? 我也嘗試連接到http://localhost:9070/api/health
但這也不起作用。
我的答案是簡單地改變 Dockerfile 如下:
- ADD backend/target/server.war /usr/local/tomcat/webapps/
+ ADD backend/target/server.war /usr/local/tomcat/webapps/ROOT.war
因為沒有它,服務器實際上正在監聽http://backend:9070/api/health/server
。 傻我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.