mirror of
https://github.com/immich-app/immich.git
synced 2024-12-28 22:51:59 +00:00
feat(deployment) Allow overriding service host and ports with env variables (#930)
* Add proxy changes * Add web changes * Add microservices changes * Add examples * Add header comment to nginx config * Use URLs instead of host and port
This commit is contained in:
parent
66640ebfeb
commit
f6aba0f9ec
9 changed files with 65 additions and 14 deletions
|
@ -67,3 +67,14 @@ JWT_SECRET=
|
|||
# For example PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>"
|
||||
|
||||
PUBLIC_LOGIN_PAGE_MESSAGE=
|
||||
|
||||
####################################################################################
|
||||
# Alternative Service Addresses - Optional
|
||||
####################################################################################
|
||||
|
||||
# This is an advanced feature for users who may be running their immich services on different hosts. It will not change which address or port that services bind to within their containers, but it will change where other services look for their peers.
|
||||
# Note: immich-microservices is bound to 3002, but no references are made
|
||||
|
||||
# IMMICH_WEB_URL=http://immich-web:3000
|
||||
# IMMICH_SERVER_URL=http://immich-server:3001
|
||||
# IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003
|
||||
|
|
|
@ -68,6 +68,9 @@ services:
|
|||
command: npm run dev --host
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
# Rename these values for svelte public interface
|
||||
- PUBLIC_IMMICH_SERVER_URL=${IMMICH_SERVER_URL}
|
||||
ports:
|
||||
- 3000:3000
|
||||
- 24678:24678
|
||||
|
@ -100,6 +103,10 @@ services:
|
|||
immich-proxy:
|
||||
container_name: immich_proxy
|
||||
image: immich-proxy-dev:latest
|
||||
environment:
|
||||
# Make sure these values get passed through from the env file
|
||||
- IMMICH_SERVER_URL
|
||||
- IMMICH_WEB_URL
|
||||
build:
|
||||
context: ../nginx
|
||||
dockerfile: Dockerfile
|
||||
|
|
|
@ -47,6 +47,9 @@ services:
|
|||
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
# Rename these values for svelte public interface
|
||||
- PUBLIC_IMMICH_SERVER_URL=${IMMICH_SERVER_URL}
|
||||
restart: always
|
||||
|
||||
redis:
|
||||
|
@ -71,6 +74,10 @@ services:
|
|||
immich-proxy:
|
||||
container_name: immich_proxy
|
||||
image: altran1502/immich-proxy:staging
|
||||
environment:
|
||||
# Make sure these values get passed through from the env file
|
||||
- IMMICH_SERVER_URL
|
||||
- IMMICH_WEB_URL
|
||||
ports:
|
||||
- 2283:8080
|
||||
logging:
|
||||
|
|
|
@ -47,6 +47,9 @@ services:
|
|||
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
# Rename these values for svelte public interface
|
||||
- PUBLIC_IMMICH_SERVER_URL=${IMMICH_SERVER_URL}
|
||||
restart: always
|
||||
|
||||
redis:
|
||||
|
@ -71,6 +74,10 @@ services:
|
|||
immich-proxy:
|
||||
container_name: immich_proxy
|
||||
image: altran1502/immich-proxy:release
|
||||
environment:
|
||||
# Make sure these values get passed through from the env file
|
||||
- IMMICH_SERVER_URL
|
||||
- IMMICH_WEB_URL
|
||||
ports:
|
||||
- 2283:8080
|
||||
logging:
|
||||
|
|
|
@ -3,6 +3,7 @@ FROM docker.io/nginxinc/nginx-unprivileged:latest
|
|||
COPY LICENSE /licenses/LICENSE.txt
|
||||
COPY LICENSE /LICENSE
|
||||
|
||||
COPY nginx.conf "/etc/nginx/nginx.conf"
|
||||
COPY nginx.conf "/etc/nginx/nginx.conf.template"
|
||||
COPY start.sh /start.sh
|
||||
|
||||
CMD nginx -g "daemon off;"
|
||||
CMD /start.sh
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
|
||||
# NOTE: This file is generated on startup. See /start.sh
|
||||
worker_processes auto;
|
||||
error_log /var/log/nginx/error.log;
|
||||
pid /tmp/nginx.pid;
|
||||
|
@ -62,7 +61,7 @@ http {
|
|||
|
||||
rewrite /api/(.*) /$1 break;
|
||||
|
||||
proxy_pass http://immich-server:3001;
|
||||
proxy_pass $IMMICH_SERVER_URL;
|
||||
}
|
||||
|
||||
location / {
|
||||
|
@ -87,7 +86,7 @@ http {
|
|||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
|
||||
proxy_pass http://immich-web:3000;
|
||||
proxy_pass $IMMICH_WEB_URL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
9
nginx/start.sh
Executable file
9
nginx/start.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#! /bin/bash
|
||||
set -e
|
||||
|
||||
export IMMICH_WEB_URL=${IMMICH_WEB_URL:-http://immich-web:3000}
|
||||
export IMMICH_SERVER_URL=${IMMICH_SERVER_URL:-http://immich-server:3001}
|
||||
|
||||
envsubst '$IMMICH_WEB_URL $IMMICH_SERVER_URL' < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
|
||||
|
||||
exec nginx -g 'daemon off;'
|
|
@ -9,6 +9,8 @@ import axios from 'axios';
|
|||
import { Job } from 'bull';
|
||||
import { Repository } from 'typeorm';
|
||||
|
||||
const immich_machine_learning_url = process.env.IMMICH_MACHINE_LEARNING_URL || 'http://immich-machine-learning:3003';
|
||||
|
||||
@Processor(QueueNameEnum.MACHINE_LEARNING)
|
||||
export class MachineLearningProcessor {
|
||||
constructor(
|
||||
|
@ -20,9 +22,12 @@ export class MachineLearningProcessor {
|
|||
async tagImage(job: Job<IMachineLearningJob>) {
|
||||
const { asset } = job.data;
|
||||
|
||||
const res = await axios.post('http://immich-machine-learning:3003/image-classifier/tag-image', {
|
||||
thumbnailPath: asset.resizePath,
|
||||
});
|
||||
const res = await axios.post(
|
||||
immich_machine_learning_url + '/image-classifier/tag-image',
|
||||
{
|
||||
thumbnailPath: asset.resizePath,
|
||||
},
|
||||
);
|
||||
|
||||
if (res.status == 201 && res.data.length > 0) {
|
||||
const smartInfo = new SmartInfoEntity();
|
||||
|
@ -40,9 +45,12 @@ export class MachineLearningProcessor {
|
|||
try {
|
||||
const { asset }: { asset: AssetEntity } = job.data;
|
||||
|
||||
const res = await axios.post('http://immich-machine-learning:3003/object-detection/detect-object', {
|
||||
thumbnailPath: asset.resizePath,
|
||||
});
|
||||
const res = await axios.post(
|
||||
immich_machine_learning_url + '/object-detection/detect-object',
|
||||
{
|
||||
thumbnailPath: asset.resizePath,
|
||||
},
|
||||
);
|
||||
|
||||
if (res.status == 201 && res.data.length > 0) {
|
||||
const smartInfo = new SmartInfoEntity();
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { env } from '$env/dynamic/public';
|
||||
import {
|
||||
AlbumApi,
|
||||
AssetApi,
|
||||
|
@ -45,4 +46,5 @@ class ImmichApi {
|
|||
|
||||
export const api = new ImmichApi();
|
||||
export const serverApi = new ImmichApi();
|
||||
serverApi.setBaseUrl('http://immich-server:3001');
|
||||
const immich_server_url = env.PUBLIC_IMMICH_SERVER_URL || 'http://immich-server:3001';
|
||||
serverApi.setBaseUrl(immich_server_url);
|
||||
|
|
Loading…
Reference in a new issue