簡體   English   中英

如何在沒有“服務容器”的情況下連接到在 Github Workflow 中使用 docker-compose/docker 啟動的服務?

[英]How to connect to service started using docker-compose/docker in Github Workflow without 'service containers'?

我正在嘗試使用 GitHub Actions 配置 CI,並且我想在工作流場景中重新使用基於“docker-compose”的邏輯/腳本。 在第一步中,我使用“docker-compose”(或 docker)啟動了一些后台服務,在接下來的步驟中,我想使用 host:port 訪問這些后台服務,但它失敗了。 例如:

  - name: Start background service
    run: docker-compose up -d mysql
  - name: Wait and check mysql container is running
    run: |
      sleep 120
      docker ps 
  - name: Check connection
    run: mysql -uroot -ppassword -hlocalhost -p3306
  # or
  - name: Check connection
    run: mysql -uroot -ppassword -hmysql -p3306 
  # here I get 'could not resolve host' error

在這兩種情況下,我都會遇到連接失敗,盡管連接參數是正確的,並且根據 'docker ps' 我有 'mysql' 容器正在運行並且端口被正確公開。

有什么辦法可以一步到位地到達碼頭集裝箱嗎? 最好不需要在另一個容器中運行步驟的邏輯。

我知道對於此類事情,GitHub Actions 提供“服務”,但我在 docker/docker-compose 中有相當多的邏輯,我真的很想用它來避免重復。

根據GitHub文檔:

您可以使用在工作流中配置的標簽訪問服務容器。 服務容器的主機名會自動映射到標簽名稱。 例如,如果您創建一個標簽為redis 的服務容器,則該服務容器的主機名是redis。

所以我認為在你的情況下你必須連接-hmysql而不是-hlocalhost

假設您在另一個容器中運行所有 MySQL 命令。

要檢查與 MySQL 容器的服務名稱的通信,請連接到 MySQL 容器部署中使用的同一網絡或鏈接您當前的網絡和 MySQL 網絡。 現在,您可以按預期進行通信。

如果您可以發布docker-compose YAML文件,我可以給您正確的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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