【发布时间】:2020-12-29 18:59:21
【问题描述】:
在下面的 GitHub Actions 工作流程中,我执行了一个针对 Micronaut 应用程序运行集成测试的 Gradle 构建。此应用程序依赖于
- 一个 MariaDB 数据库
- 和
security/image:0.1.15
jobs:
build-test:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ '15' ]
services:
tempoapp-db:
image: mariadb:10.4.15
ports:
- 3306:3306
env:
MYSQL_ROOT_PASSWORD: foo
MYSQL_DATABASE: xoxo
MYSQL_USER: bar
MYSQL_PASSWORD: foobar
security:
image: security/image:0.1.15
env:
JAVA_TOOL_OPTIONS: "-Dcallback.url=http://<what to place here?>:8090"
credentials:
username: ${{ secrets.PACKAGES_USER }}
password: ${{ secrets.PACKAGES_TOKEN }}
ports:
- 6000:8080
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java }}
- name: Build and test the application
run: ./gradlew -s check publishToMavenLocal dockerPrepare
在集成测试阶段,需要security/image:0.1.15 Docker 容器才能访问在 Docker 主机上运行的 Micronaut 应用程序。在我的 Docker 桌面环境中,我通常使用主机名 host.docker.internal 来从容器访问主机。这似乎不适用于 GitHub Actions,因为我收到以下错误
io.micronaut.http.client.exceptions.HttpClientException: Connect Error: host.docker.internal: Name does not resolve
at io.micronaut.http.client.netty.DefaultHttpClient.lambda$null$34(DefaultHttpClient.java:1119)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
有没有办法获取主机的 IP 地址或主机名?
security:
image: security/image:0.1.15
env:
JAVA_TOOL_OPTIONS: "-Dcallback.url=http://<what to place here?>:8090"
【问题讨论】: