All checks were successful
Frontend CI / build (push) Successful in 1m4s
### Description - Change some environment variables implementation - Nginx configuration: ```nginx server { server_name beta.squidspirit.com; proxy_pass_request_headers on; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; location / { proxy_pass http://127.0.0.1:10013/; } location /api/ { proxy_pass http://127.0.0.1:10014/; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/beta.squidspirit.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/beta.squidspirit.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = beta.squidspirit.com) { return 301 https://$host$request_uri; } # managed by Certbot server_name beta.squidspirit.com; listen 80; return 404; # managed by Certbot } ``` - Podman kube configuration: ```yaml apiVersion: v1 kind: Secret metadata: name: beta-blog-secret data: DATABASE_PASSWORD: {{BASE64_PASSWORD}} --- apiVersion: v1 kind: Pod metadata: name: beta-blog spec: containers: - name: postgres image: docker.io/library/postgres:17-alpine imagePullPolicy: always env: - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: beta-blog-secret key: DATABASE_PASSWORD volumeMounts: - name: beta-blog-postgres mountPath: /var/lib/postgresql/data - name: backend image: registry.squidspirit.com/squid/beta-blog-backend:latest imagePullPolicy: always env: - name: DATABASE_PASSWORD valueFrom: secretKeyRef: name: beta-blog-secret key: DATABASE_PASSWORD volumeMounts: - name: beta-blog-localtime mountPath: /etc/localtime readonly: true ports: - hostPort: 10014 hostIP: 127.0.0.1 containerPort: 8080 - name: frontend image: registry.squidspirit.com/squid/beta-blog-frontend:latest imagePullPolicy: always env: - name: PUBLIC_API_BASE_URL value: https://beta.squidspirit.com/api/ volumeMounts: - name: beta-blog-localtime mountPath: /etc/localtime readonly: true ports: - hostPort: 10013 hostIP: 127.0.0.1 containerPort: 3000 volumes: - name: beta-blog-localtime hostPath: path: /etc/localtime - name: beta-blog-postgres persistentVolumeClaim: claimName: beta-blog-postgres ``` ### Package Changes _No response_ ### Screenshots _No response_ ### Reference Resolves #65 ### Checklist - [x] A milestone is set - [x] The related issuse has been linked to this branch Reviewed-on: #66 Co-authored-by: SquidSpirit <squid@squidspirit.com> Co-committed-by: SquidSpirit <squid@squidspirit.com>
73 lines
2.0 KiB
Rust
73 lines
2.0 KiB
Rust
use actix_web::{
|
|
App, Error, HttpServer,
|
|
body::MessageBody,
|
|
dev::{ServiceFactory, ServiceRequest, ServiceResponse},
|
|
web,
|
|
};
|
|
use post::framework::web::post_web_routes::configure_post_routes;
|
|
use server::container::Container;
|
|
use sqlx::{Pool, Postgres, postgres::PgPoolOptions};
|
|
use std::env;
|
|
|
|
#[actix_web::main]
|
|
async fn main() -> std::io::Result<()> {
|
|
dotenv::dotenv().ok();
|
|
env_logger::init();
|
|
|
|
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((host, port))?
|
|
.run()
|
|
.await
|
|
}
|
|
|
|
async fn init_database() -> Pool<Postgres> {
|
|
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)
|
|
.connect(&database_url)
|
|
.await
|
|
.expect("Failed to create database connection pool");
|
|
|
|
sqlx::migrate!("../migrations")
|
|
.run(&db_pool)
|
|
.await
|
|
.expect("Failed to run database migrations");
|
|
|
|
db_pool
|
|
}
|
|
|
|
fn create_app(
|
|
db_pool: Pool<Postgres>,
|
|
) -> App<
|
|
impl ServiceFactory<
|
|
ServiceRequest,
|
|
Response = ServiceResponse<impl MessageBody>,
|
|
Config = (),
|
|
InitError = (),
|
|
Error = Error,
|
|
>,
|
|
> {
|
|
let container = Container::new(db_pool);
|
|
|
|
App::new()
|
|
.app_data(web::Data::from(container.post_controller))
|
|
.configure(configure_post_routes)
|
|
}
|