diff --git a/Dockerfile.postgres b/Dockerfile.postgres new file mode 100644 index 000000000..9ccbd44cf --- /dev/null +++ b/Dockerfile.postgres @@ -0,0 +1,6 @@ +FROM postgres:16-alpine + +# Add any custom PostgreSQL configurations if needed +COPY postgresql.conf /etc/postgresql/postgresql.conf + +CMD ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"] \ No newline at end of file diff --git a/docker-compose.build.yml b/docker-compose.build.yml index 23a9cf897..9775bc47d 100644 --- a/docker-compose.build.yml +++ b/docker-compose.build.yml @@ -34,3 +34,17 @@ services: build: context: . dockerfile: src/Services/AliasVault.TaskRunner/Dockerfile + + postgres: + image: aliasvault-postgres + build: + context: . + dockerfile: Dockerfile.postgres + ports: + - "5432:5432" + volumes: + - ./database:/var/lib/postgresql/data:rw + environment: + POSTGRES_DB: aliasvault + POSTGRES_USER: aliasvault + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} diff --git a/docker-compose.yml b/docker-compose.yml index c00261f01..6b949b0b5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -38,6 +38,10 @@ services: restart: always env_file: - .env + depends_on: + - postgres + environment: + ConnectionStrings__AliasServerDbContext: "Host=postgres;Database=aliasvault;Username=aliasvault;Password=${POSTGRES_PASSWORD}" admin: image: ghcr.io/lanedirt/aliasvault-admin:latest @@ -50,6 +54,10 @@ services: restart: always env_file: - .env + depends_on: + - postgres + environment: + ConnectionStrings__AliasServerDbContext: "Host=postgres;Database=aliasvault;Username=aliasvault;Password=${POSTGRES_PASSWORD}" smtp: image: ghcr.io/lanedirt/aliasvault-smtp:latest @@ -62,6 +70,10 @@ services: restart: always env_file: - .env + depends_on: + - postgres + environment: + ConnectionStrings__AliasServerDbContext: "Host=postgres;Database=aliasvault;Username=aliasvault;Password=${POSTGRES_PASSWORD}" task-runner: image: ghcr.io/lanedirt/aliasvault-task-runner:latest @@ -71,3 +83,17 @@ services: restart: always env_file: - .env + depends_on: + - postgres + environment: + ConnectionStrings__AliasServerDbContext: "Host=postgres;Database=aliasvault;Username=aliasvault;Password=${POSTGRES_PASSWORD}" + + postgres: + image: ghcr.io/lanedirt/aliasvault-postgres:latest + volumes: + - ./database:/var/lib/postgresql/data:rw + environment: + POSTGRES_DB: aliasvault + POSTGRES_USER: aliasvault + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + restart: always diff --git a/install.sh b/install.sh index 3fa2472dd..f46f50b05 100755 --- a/install.sh +++ b/install.sh @@ -689,7 +689,6 @@ handle_build() { set_default_ports || { printf "${RED}> Failed to set default ports${NC}\n"; exit 1; } set_public_registration || { printf "${RED}> Failed to set public registration${NC}\n"; exit 1; } - # Only generate admin password if not already set if ! grep -q "^ADMIN_PASSWORD_HASH=" "$ENV_FILE" || [ -z "$(grep "^ADMIN_PASSWORD_HASH=" "$ENV_FILE" | cut -d '=' -f2)" ]; then generate_admin_password || { printf "${RED}> Failed to generate admin password${NC}\n"; exit 1; } diff --git a/postgresql.conf b/postgresql.conf new file mode 100644 index 000000000..2c15fbeb6 --- /dev/null +++ b/postgresql.conf @@ -0,0 +1,14 @@ +# Basic PostgreSQL configuration +max_connections = 100 +shared_buffers = 128MB +dynamic_shared_memory_type = posix +max_wal_size = 1GB +min_wal_size = 80MB +log_timezone = 'UTC' +datestyle = 'iso, mdy' +timezone = 'UTC' +lc_messages = 'en_US.utf8' +lc_monetary = 'en_US.utf8' +lc_numeric = 'en_US.utf8' +lc_time = 'en_US.utf8' +default_text_search_config = 'pg_catalog.english' \ No newline at end of file