如何通过docker组成的环境变量

问题描述 投票:0回答:1

async fn main() { let db_connection_str = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set."); println!("Connecting to database: {}", db_connection_str); let pool = PgPoolOptions::new() .max_connections(5) .acquire_timeout(Duration::from_secs(3)) .connect(&db_connection_str) .await .expect("can't connect to database");

问题是它没有获得环境变量。 
db_connection_str

是空的,我在控制台“连接到数据库中:”没有实际值。

这是dockerfile
println

这是Docker-Compose文件

FROM rust:1.84 AS development WORKDIR /backend COPY . . ARG DATABASE_URL ENV DATABASE_URL=$DATABASE_URL RUN cargo run
我有一个用于环境变量的文件。

注:我运行此命令

  backend:
    build: ./backend
    ports:
      - "5173:5173"
    environment:
      DATABASE_URL: $DATABASE_URL

它有效,它获取环境变量,但是当我运行时,它没有,并且上述问题发生了。

	

序列不正确。

构建容器时,您将设置被烘烤到容器图像中的环境变量。但是您的DockerFile中的ARG线允许在容器运行时指定环境变量。效果,您在Docker构建时间期间指定的值只是一个默认值。

现在,在Docker-Compose文件中,您不仅启动容器,还可以指定环境变量。但是它有什么价值?
.env
可以解析用于码头组合吗?

测试,我要么放置一个文字值以覆盖或完全删除该变量以允许容器使用它的默认值。
    

docker rust docker-compose dockerfile
1个回答
0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.