BLOG-65 feat: update Dockerfiles and environment configuration for database and API integration
All checks were successful
Frontend CI / build (push) Successful in 1m4s
PR Title Check / pr-title-check (pull_request) Successful in 17s

This commit is contained in:
SquidSpirit 2025-07-24 02:16:42 +08:00
parent c2462fe537
commit 0f4033aefc
5 changed files with 27 additions and 7 deletions

View File

@ -11,5 +11,12 @@ FROM alpine:latest AS runner
WORKDIR /app
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/server .
EXPOSE 8080
ENV DATABASE_URL=postgres://postgres@localhost:5432/postgres
ENV RUST_LOG=info
ENV HOST=0.0.0.0
ENV PORT=8080
ENV DATABASE_HOST=127.0.0.1
ENV DATABASE_PORT=5432
ENV DATABASE_USER=postgres
ENV DATABASE_PASSWORD=
ENV DATABASE_NAME=postgres
CMD ["./server"]

View File

@ -16,15 +16,28 @@ async fn main() -> std::io::Result<()> {
let db_pool = init_database().await;
let host = env::var("HOST").unwrap_or_else(|_| "0.0.0.0".to_string());
let port = env::var("PORT")
.unwrap_or_else(|_| "8080".to_string())
.parse::<u16>()
.unwrap();
HttpServer::new(move || create_app(db_pool.clone()))
.bind(("0.0.0.0", 8080))?
.bind((host, port))?
.run()
.await
}
async fn init_database() -> Pool<Postgres> {
let database_url = env::var("DATABASE_URL")
.unwrap_or_else(|_| "postgres://postgres@localhost:5432/postgres".to_string());
let host = env::var("DATABASE_HOST").unwrap_or_else(|_| "127.0.0.1".to_string());
let port = env::var("DATABASE_PORT").unwrap_or_else(|_| "5432".to_string());
let user = env::var("DATABASE_USER").unwrap_or_else(|_| "postgres".to_string());
let password = env::var("DATABASE_PASSWORD").unwrap_or_else(|_| "".to_string());
let dbname = env::var("DATABASE_NAME").unwrap_or_else(|_| "postgres".to_string());
let database_url = format!(
"postgres://{}:{}@{}:{}/{}",
user, password, host, port, dbname
);
let db_pool = PgPoolOptions::new()
.max_connections(5)

View File

@ -23,4 +23,5 @@ EXPOSE 3000
ENV NODE_ENV=production
ENV HOSTNAME=0.0.0.0
ENV PORT=3000
ENV PUBLIC_API_BASE_URL=http://127.0.0.1:8080/
CMD ["node", "build"]

View File

@ -1,5 +1,5 @@
import { env } from '$env/dynamic/public';
export abstract class Environment {
static readonly API_BASE_URL = env.PUBLIC_BACKEND_URL ?? 'http://localhost:5173/api';
static readonly API_BASE_URL = env.PUBLIC_API_BASE_URL ?? 'http://localhost:5173/api/';
}

View File

@ -4,8 +4,7 @@ import { PostInfoResponseDto } from '$lib/post/adapter/gateway/postInfoResponseD
export class PostApiServiceImpl implements PostApiService {
async getAllPosts(): Promise<PostInfoResponseDto[]> {
const url = new URL(Environment.API_BASE_URL);
url.pathname += '/post/all';
const url = new URL('post/all', Environment.API_BASE_URL);
const response = await fetch(url.href);