我有一个 rust Axum 应用程序,它一开始就读取数据库 URL 来创建数据库连接:
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
是空的,我println
在控制台中得到了“连接到数据库:”而没有实际值。
这是 dockerfile
FROM rust:1.84 AS development
WORKDIR /backend
COPY . .
ARG DATABASE_URL
ENV DATABASE_URL=$DATABASE_URL
RUN cargo run
这是 docker-compose 文件
backend:
build: ./backend
ports:
- "5173:5173"
environment:
DATABASE_URL: $DATABASE_URL
我有一个.env
环境变量文件。
注意:当我运行此命令时
docker build -t backend --build-arg DATABASE_URL=<Database_url> .
它可以运行,并且可以获取环境变量,但是当我运行docker-compose up
它时却没有,并且发生了上述问题。