[英]WebDriver container cannot access DockerComposeContainer services
[英]Testcontainers DockerComposeContainer withEnv
我正在嘗試使用 DockerComposeContainer 將 env 變量傳遞給在 docker compose 文件中定義的服務
final var compose = new DockerComposeContainer<>(new File("../docker-compose.yml"))
.withEnv(Map.of("MY_ENV_VAR", "test_value"))
.withLocalCompose(true);
compose.start();
但是我在docker compose 啟動的任何容器中都看不到MY_ENV_VAR 環境變量。 此外,我找不到任何解釋withEnv
如何與 DockerComposeContainer withEnv
工作的文檔。
如何從docker compose文件正確地將env傳遞給容器?
弄清楚了。 必須通過 env。 將變量手動添加到 docker-compose 文件中所需的服務:
# docker-compose.yml
services:
my-service:
environment:
MY_ENV_VAR: ${MY_ENV_VAR}
在幕后,Testcontainers 實際上啟動了一個臨時的 Docker Compose 客戶端——當然是在容器中,所以沒有必要將它安裝在所有開發人員/測試機器上。
由於沒有關於withEnv()
方法的文檔,我查看了源代碼並在env
類字段中找到了此注釋。
應該傳遞給所有 Compose 和大使容器的屬性(不一定傳遞給 Compose 本身產生的容器)
據我了解,使用withEnv()
方法傳遞的環境變量應用於運行 Docker Compose 客戶端的容器。 因此,如果你想為衍生的容器指定環境變量,你應該使用 Docker Compose 配置文件來完成。
對於本地 Docker Compose 實例, 環境變量應用於 docker-compose 命令。 由 Docker Compose 產生的容器不會從請求它們產生的客戶端繼承環境變量。 但是,您仍然可以使用配置文件將客戶端的環境變量注入生成的容器中。
version: "3.9"
services:
test:
image: busybox
environment:
TEST_ENV_VAR: ${TEST_ENV_VAR:default-value}
command: printenv
然后您的 Java 代碼應該能夠按預期注入它。
new DockerComposeContainer<>(new File("../docker-compose.yml"))
.withEnv(Map.of("TEST_ENV_VAR", "test_value"))
.withLocalCompose(true)
.start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.