Make some of the database config values optional (fixes #1550)

This commit is contained in:
Felix Ableitner 2021-04-06 14:57:37 +02:00
parent df7fe705eb
commit ccdf117c8f
6 changed files with 42 additions and 22 deletions

View file

@ -21,15 +21,20 @@ impl Default for Settings {
} }
} }
pub(in crate::settings) static DEFAULT_DATABASE_USER: &str = "lemmy";
pub(in crate::settings) static DEFAULT_DATABASE_PORT: i32 = 5432;
pub(in crate::settings) static DEFAULT_DATABASE_DB: &str = "lemmy";
pub static DEFAULT_DATABASE_POOL_SIZE: u32 = 5;
impl Default for DatabaseConfig { impl Default for DatabaseConfig {
fn default() -> Self { fn default() -> Self {
Self { Self {
user: "lemmy".into(), user: Some(DEFAULT_DATABASE_USER.to_string()),
password: "password".into(), password: "password".into(),
host: "localhost".into(), host: "localhost".into(),
port: 5432, port: Some(DEFAULT_DATABASE_PORT),
database: "lemmy".into(), database: Some(DEFAULT_DATABASE_DB.to_string()),
pool_size: 5, pool_size: Some(DEFAULT_DATABASE_POOL_SIZE),
} }
} }
} }

View file

@ -1,13 +1,16 @@
use crate::{ use crate::{
location_info, location_info,
settings::structs::{ settings::{
CaptchaConfig, defaults::{DEFAULT_DATABASE_DB, DEFAULT_DATABASE_PORT, DEFAULT_DATABASE_USER},
DatabaseConfig, structs::{
EmailConfig, CaptchaConfig,
FederationConfig, DatabaseConfig,
RateLimitConfig, EmailConfig,
Settings, FederationConfig,
SetupConfig, RateLimitConfig,
Settings,
SetupConfig,
},
}, },
LemmyError, LemmyError,
}; };
@ -16,7 +19,7 @@ use deser_hjson::from_str;
use merge::Merge; use merge::Merge;
use std::{env, fs, io::Error, net::IpAddr, sync::RwLock}; use std::{env, fs, io::Error, net::IpAddr, sync::RwLock};
pub(crate) mod defaults; pub mod defaults;
pub mod structs; pub mod structs;
static CONFIG_FILE: &str = "config/config.hjson"; static CONFIG_FILE: &str = "config/config.hjson";
@ -60,7 +63,15 @@ impl Settings {
let conf = self.database(); let conf = self.database();
format!( format!(
"postgres://{}:{}@{}:{}/{}", "postgres://{}:{}@{}:{}/{}",
conf.user, conf.password, conf.host, conf.port, conf.database, conf
.user
.unwrap_or_else(|| DEFAULT_DATABASE_USER.to_string()),
conf.password,
conf.host,
conf.port.unwrap_or(DEFAULT_DATABASE_PORT),
conf
.database
.unwrap_or_else(|| DEFAULT_DATABASE_DB.to_string()),
) )
} }

View file

@ -27,12 +27,12 @@ pub struct CaptchaConfig {
#[derive(Debug, Deserialize, Clone)] #[derive(Debug, Deserialize, Clone)]
pub struct DatabaseConfig { pub struct DatabaseConfig {
pub user: String, pub user: Option<String>,
pub password: String, pub password: String,
pub host: String, pub host: String,
pub port: i32, pub port: Option<i32>,
pub database: String, pub database: Option<String>,
pub pool_size: u32, pub pool_size: Option<u32>,
} }
#[derive(Debug, Deserialize, Clone)] #[derive(Debug, Deserialize, Clone)]

View file

@ -8,4 +8,4 @@ set -e
mkdir -p volumes/pictrs mkdir -p volumes/pictrs
sudo chown -R 991:991 volumes/pictrs sudo chown -R 991:991 volumes/pictrs
sudo docker build ../../ --file ../dev/volume_mount.dockerfile -t lemmy-dev:latest sudo docker build ../../ --file ../dev/volume_mount.dockerfile -t lemmy-dev:latest
sudo docker-compose up -d sudo docker-compose up

View file

@ -24,7 +24,6 @@ RUN apt-get update -y
RUN apt-get install -y libpq-dev espeak RUN apt-get install -y libpq-dev espeak
# Copy resources # Copy resources
COPY config/defaults.hjson /config/defaults.hjson
COPY --from=rust /app/lemmy_server /app/lemmy COPY --from=rust /app/lemmy_server /app/lemmy
EXPOSE 8536 EXPOSE 8536

View file

@ -16,7 +16,7 @@ use lemmy_routes::{feeds, images, nodeinfo, webfinger};
use lemmy_server::{api_routes, code_migrations::run_advanced_migrations, scheduled_tasks}; use lemmy_server::{api_routes, code_migrations::run_advanced_migrations, scheduled_tasks};
use lemmy_utils::{ use lemmy_utils::{
rate_limit::{rate_limiter::RateLimiter, RateLimit}, rate_limit::{rate_limiter::RateLimiter, RateLimit},
settings::structs::Settings, settings::{defaults::DEFAULT_DATABASE_POOL_SIZE, structs::Settings},
LemmyError, LemmyError,
}; };
use lemmy_websocket::{chat_server::ChatServer, LemmyContext}; use lemmy_websocket::{chat_server::ChatServer, LemmyContext};
@ -38,7 +38,12 @@ async fn main() -> Result<(), LemmyError> {
}; };
let manager = ConnectionManager::<PgConnection>::new(&db_url); let manager = ConnectionManager::<PgConnection>::new(&db_url);
let pool = Pool::builder() let pool = Pool::builder()
.max_size(settings.database().pool_size) .max_size(
settings
.database()
.pool_size
.unwrap_or(DEFAULT_DATABASE_POOL_SIZE),
)
.build(manager) .build(manager)
.unwrap_or_else(|_| panic!("Error connecting to {}", db_url)); .unwrap_or_else(|_| panic!("Error connecting to {}", db_url));