mirror of
https://github.com/immich-app/immich.git
synced 2025-07-07 09:12:56 +02:00
Review comments
This commit is contained in:
parent
4044887d5c
commit
1748c3ba6b
20 changed files with 163 additions and 250 deletions
.devcontainer
.envdevcontainer.json
ml
mobile
.envDockerfilecontainer-compose-overrides.ymlcontainer-mobile-post-create.shdevcontainer.jsondocker-compose.yml
server
.vscode
server
|
@ -1,22 +0,0 @@
|
||||||
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
|
|
||||||
|
|
||||||
# The location where your uploaded files are stored
|
|
||||||
UPLOAD_LOCATION=./library
|
|
||||||
|
|
||||||
# The location where your database files are stored. Network shares are not supported for the database
|
|
||||||
DB_DATA_LOCATION=./postgres
|
|
||||||
|
|
||||||
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
|
||||||
# TZ=Etc/UTC
|
|
||||||
|
|
||||||
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
|
|
||||||
IMMICH_VERSION=release
|
|
||||||
|
|
||||||
# Connection secret for postgres. You should change it to a random password
|
|
||||||
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
|
|
||||||
DB_PASSWORD=postgres
|
|
||||||
|
|
||||||
# The values below this line do not need to be changed
|
|
||||||
###################################################################################
|
|
||||||
DB_USERNAME=postgres
|
|
||||||
DB_DATABASE_NAME=immich
|
|
|
@ -1,7 +1,16 @@
|
||||||
{
|
{
|
||||||
"name": "Immich - Backend and Frontend",
|
"name": "Immich - Backend, Frontend and ML",
|
||||||
"service": "immich-devcontainer-server",
|
"service": "immich-server",
|
||||||
"dockerComposeFile": ["server/docker-compose.yml"],
|
"runServices": [
|
||||||
|
"immich-server",
|
||||||
|
"redis",
|
||||||
|
"database",
|
||||||
|
"immich-machine-learning"
|
||||||
|
],
|
||||||
|
"dockerComposeFile": [
|
||||||
|
"../docker/docker-compose.dev.yml",
|
||||||
|
"./server/container-compose-overrides.yml"
|
||||||
|
],
|
||||||
"customizations": {
|
"customizations": {
|
||||||
"vscode": {
|
"vscode": {
|
||||||
"extensions": [
|
"extensions": [
|
||||||
|
@ -43,7 +52,7 @@
|
||||||
"overrideCommand": true,
|
"overrideCommand": true,
|
||||||
"workspaceFolder": "/workspaces/immich",
|
"workspaceFolder": "/workspaces/immich",
|
||||||
"remoteUser": "node",
|
"remoteUser": "node",
|
||||||
"postCreateCommand": "/immich-devcontainer/postCreate.sh",
|
"postCreateCommand": "/immich-devcontainer/container-server-post-create.sh",
|
||||||
"userEnvProbe": "loginInteractiveShell",
|
"userEnvProbe": "loginInteractiveShell",
|
||||||
"remoteEnv": {
|
"remoteEnv": {
|
||||||
// The location where your uploaded files are stored
|
// The location where your uploaded files are stored
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
|
|
||||||
|
|
||||||
# The location where your uploaded files are stored
|
|
||||||
UPLOAD_LOCATION=upload-volume
|
|
||||||
|
|
||||||
# The location where your database files are stored
|
|
||||||
DB_DATA_LOCATION=db-volume
|
|
||||||
|
|
||||||
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
|
||||||
# TZ=Etc/UTC
|
|
||||||
|
|
||||||
# Connection secret for postgres. You should change it to a random password
|
|
||||||
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
|
|
||||||
DB_PASSWORD=postgres
|
|
||||||
|
|
||||||
# The values below this line do not need to be changed
|
|
||||||
###################################################################################
|
|
||||||
DB_USERNAME=postgres
|
|
||||||
DB_DATABASE_NAME=immich
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
"name": "Immich - Machine Learning",
|
|
||||||
"service": "immich-machine-learning",
|
|
||||||
"dockerComposeFile": ["docker-compose.yml"],
|
|
||||||
"customizations": {
|
|
||||||
"vscode": {
|
|
||||||
"extensions": [
|
|
||||||
"ms-python.python","ms-python.debugpy","KevinRose.vsc-python-indent"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"forwardPorts": [],
|
|
||||||
"overrideCommand": true,
|
|
||||||
"workspaceFolder": "/workspaces/immich",
|
|
||||||
"remoteUser": "node"
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
services:
|
|
||||||
immich-machine-learning:
|
|
||||||
image: immich-machine-learning-dev:latest
|
|
||||||
build:
|
|
||||||
context: ../../machine-learning
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
target: devcontainer
|
|
||||||
hostname: immich-machine-learning
|
|
||||||
volumes:
|
|
||||||
# bind mount host to /workspaces/immich
|
|
||||||
- ../..:/workspaces/immich
|
|
||||||
- model-cache:/cache
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
model-cache:
|
|
|
@ -1,19 +0,0 @@
|
||||||
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
|
|
||||||
|
|
||||||
# The location where your uploaded files are stored
|
|
||||||
UPLOAD_LOCATION=upload-volume
|
|
||||||
|
|
||||||
# The location where your database files are stored
|
|
||||||
DB_DATA_LOCATION=db-volume
|
|
||||||
|
|
||||||
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
|
||||||
# TZ=Etc/UTC
|
|
||||||
|
|
||||||
# Connection secret for postgres. You should change it to a random password
|
|
||||||
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
|
|
||||||
DB_PASSWORD=postgres
|
|
||||||
|
|
||||||
# The values below this line do not need to be changed
|
|
||||||
###################################################################################
|
|
||||||
DB_USERNAME=postgres
|
|
||||||
DB_DATABASE_NAME=immich
|
|
|
@ -1,31 +0,0 @@
|
||||||
ARG BASEIMAGE=ghcr.io/immich-app/base-server-dev:202503182202@sha256:45ae044b64a7b518f8d94fa4de718090c1c7689d516ac2ac0976a5331eaeb396
|
|
||||||
FROM ${BASEIMAGE} AS dev
|
|
||||||
|
|
||||||
# Flutter SDK
|
|
||||||
# https://flutter.dev/docs/development/tools/sdk/releases?tab=linux
|
|
||||||
ENV FLUTTER_CHANNEL="stable"
|
|
||||||
ENV FLUTTER_VERSION="3.29.3"
|
|
||||||
ENV FLUTTER_HOME=/flutter
|
|
||||||
ENV PATH=${PATH}:${FLUTTER_HOME}/bin
|
|
||||||
|
|
||||||
RUN apt-get install inetutils-ping sudo
|
|
||||||
RUN usermod -aG sudo node
|
|
||||||
RUN echo "node ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|
||||||
RUN mkdir -p /workspaces/immich
|
|
||||||
RUN chown node -R /workspaces
|
|
||||||
|
|
||||||
# Flutter SDK
|
|
||||||
RUN mkdir -p ${FLUTTER_HOME} \
|
|
||||||
&& curl -C - --output flutter.tar.xz https://storage.googleapis.com/flutter_infra_release/releases/${FLUTTER_CHANNEL}/linux/flutter_linux_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.tar.xz \
|
|
||||||
&& tar -xf flutter.tar.xz --strip-components=1 -C ${FLUTTER_HOME} \
|
|
||||||
&& rm flutter.tar.xz \
|
|
||||||
&& chown -R node ${FLUTTER_HOME}
|
|
||||||
|
|
||||||
USER node
|
|
||||||
RUN sudo apt-get update \
|
|
||||||
&& wget -qO- https://dcm.dev/pgp-key.public | sudo gpg --dearmor -o /usr/share/keyrings/dcm.gpg \
|
|
||||||
&& echo 'deb [signed-by=/usr/share/keyrings/dcm.gpg arch=amd64] https://dcm.dev/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list \
|
|
||||||
&& sudo apt-get update \
|
|
||||||
&& sudo apt-get install dcm -y
|
|
||||||
|
|
||||||
RUN dart --disable-analytics
|
|
34
.devcontainer/mobile/container-compose-overrides.yml
Normal file
34
.devcontainer/mobile/container-compose-overrides.yml
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
services:
|
||||||
|
immich-server:
|
||||||
|
build:
|
||||||
|
target: dev-container-mobile
|
||||||
|
environment:
|
||||||
|
- IMMICH_SERVER_URL=http://127.0.0.1:2283/
|
||||||
|
volumes: !override # bind mount host to /workspaces/immich
|
||||||
|
- ..:/workspaces/immich
|
||||||
|
- cli_node_modules:/workspaces/immich/cli/node_modules
|
||||||
|
- e2e_node_modules:/workspaces/immich/e2e/node_modules
|
||||||
|
- open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
|
||||||
|
- server_node_modules:/workspaces/immich/server/node_modules
|
||||||
|
- web_node_modules:/workspaces/immich/web/node_modules
|
||||||
|
- ${UPLOAD_LOCATION}/photos:/workspaces/immich/server/upload
|
||||||
|
- ${UPLOAD_LOCATION}/photos/upload:/workspaces/immich/server/upload/upload
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
|
||||||
|
database:
|
||||||
|
volumes:
|
||||||
|
- ${UPLOAD_LOCATION}/postgres:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# Node modules for each service to avoid conflicts and ensure consistent dependencies
|
||||||
|
cli_node_modules:
|
||||||
|
e2e_node_modules:
|
||||||
|
open_api_node_modules:
|
||||||
|
server_node_modules:
|
||||||
|
web_node_modules:
|
||||||
|
|
||||||
|
# UPLOAD_LOCATION must be set to a absolute path or vol-upload
|
||||||
|
vol-upload:
|
||||||
|
|
||||||
|
# DB_DATA_LOCATION must be set to a absolute path or vol-database
|
||||||
|
vol-database:
|
|
@ -1,5 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
/immich-devcontainer/container-server-post-create.sh
|
||||||
|
|
||||||
# Enable multiarch for arm64 if necessary
|
# Enable multiarch for arm64 if necessary
|
||||||
if [ "$(dpkg --print-architecture)" = "arm64" ]; then
|
if [ "$(dpkg --print-architecture)" = "arm64" ]; then
|
||||||
sudo dpkg --add-architecture amd64 &&
|
sudo dpkg --add-architecture amd64 &&
|
|
@ -1,14 +1,35 @@
|
||||||
{
|
{
|
||||||
"name": "Immich - Mobile",
|
"name": "Immich - Mobile",
|
||||||
"service": "immich-mobile",
|
"service": "immich-server",
|
||||||
"dockerComposeFile": ["docker-compose.yml"],
|
"runServices": [
|
||||||
|
"immich-server",
|
||||||
|
"redis",
|
||||||
|
"database",
|
||||||
|
"immich-machine-learning"
|
||||||
|
],
|
||||||
|
"dockerComposeFile": [
|
||||||
|
"../../docker/docker-compose.dev.yml",
|
||||||
|
"./container-compose-overrides.yml"
|
||||||
|
],
|
||||||
"customizations": {
|
"customizations": {
|
||||||
"vscode": {
|
"vscode": {
|
||||||
"extensions": [
|
"extensions": [
|
||||||
"Dart-Code.dart-code",
|
"Dart-Code.dart-code",
|
||||||
"Dart-Code.flutter",
|
"Dart-Code.flutter",
|
||||||
"dcmdev.dcm-vscode-extension",
|
"dcmdev.dcm-vscode-extension",
|
||||||
"esbenp.prettier-vscode"
|
"esbenp.prettier-vscode",
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"svelte.svelte-vscode",
|
||||||
|
"ms-vscode-remote.remote-containers",
|
||||||
|
"foxundermoon.shell-format",
|
||||||
|
"timonwong.shellcheck",
|
||||||
|
"rvest.vs-code-prettier-eslint",
|
||||||
|
"bluebrown.yamlfmt",
|
||||||
|
"vkrishna04.cspell-sync",
|
||||||
|
"vitest.explorer",
|
||||||
|
"ms-playwright.playwright",
|
||||||
|
"ms-azuretools.vscode-docker"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -16,5 +37,25 @@
|
||||||
"overrideCommand": true,
|
"overrideCommand": true,
|
||||||
"workspaceFolder": "/workspaces/immich",
|
"workspaceFolder": "/workspaces/immich",
|
||||||
"remoteUser": "node",
|
"remoteUser": "node",
|
||||||
"postCreateCommand": "/workspaces/immich/.devcontainer/mobile/postCreate.sh"
|
"postCreateCommand": "/immich-devcontainer/container-mobile-post-create.sh",
|
||||||
|
"userEnvProbe": "loginInteractiveShell",
|
||||||
|
"remoteEnv": {
|
||||||
|
// The location where your uploaded files are stored
|
||||||
|
// If this starts with / or ./, it is a bind mount to a path
|
||||||
|
// on host. Otherwise, it must be the value "vol-upload"
|
||||||
|
// which is also the default loaded from .env.
|
||||||
|
"UPLOAD_LOCATION": "${localEnv:UPLOAD_LOCATION}",
|
||||||
|
// The location where your database files are stored.
|
||||||
|
// If this starts with / or ./, it is a bind mount to a path
|
||||||
|
// on host. Otherwise, it must be the value "vol-database"
|
||||||
|
// which is also the default loaded from .env.
|
||||||
|
"DB_DATA_LOCATION": "${localEnv:DB_DATA_LOCATION}",
|
||||||
|
// Connection secret for postgres. You should change it to a random password
|
||||||
|
// Please use only the characters `A-Za-z0-9`, without special characters or spaces
|
||||||
|
"DB_PASSWORD": "${localEnv:DB_PASSWORD}",
|
||||||
|
// The database username
|
||||||
|
"DB_USERNAME": "${localEnv:DB_USERNAME}",
|
||||||
|
// The database name
|
||||||
|
"DB_DATABASE_NAME": "${localEnv:DB_DATABASE_NAME}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
services:
|
|
||||||
immich-mobile:
|
|
||||||
build:
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
hostname: immich-devcontainer-mobile
|
|
||||||
extra_hosts:
|
|
||||||
- 'host.docker.internal:host-gateway'
|
|
||||||
volumes:
|
|
||||||
# by default, bind mount host to /workspaces/immich
|
|
||||||
- ../..:/workspaces/immich
|
|
||||||
- ./vscode:/workspaces/immich/.vscode
|
|
||||||
- cli_node_modules:/workspaces/immich/cli/node_modules
|
|
||||||
- e2e_node_modules:/workspaces/immich/e2e/node_modules
|
|
||||||
- open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
|
|
||||||
- server_node_modules:/workspaces/immich/server/node_modules
|
|
||||||
- web_node_modules:/workspaces/immich/web/node_modules
|
|
||||||
- ${UPLOAD_LOCATION}:/workspaces/immich/server/upload
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
cli_node_modules:
|
|
||||||
e2e_node_modules:
|
|
||||||
open_api_node_modules:
|
|
||||||
server_node_modules:
|
|
||||||
web_node_modules:
|
|
||||||
immich:
|
|
||||||
upload-volume:
|
|
||||||
db-volume:
|
|
|
@ -1,14 +0,0 @@
|
||||||
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
|
|
||||||
|
|
||||||
# The location where your uploaded files are stored
|
|
||||||
UPLOAD_LOCATION=vol-upload
|
|
||||||
|
|
||||||
# The location where your db files are stored
|
|
||||||
DB_DATA_LOCATION=vol-database
|
|
||||||
|
|
||||||
# Connection secret for postgres. You should change it to a random password
|
|
||||||
DB_PASSWORD=postgres
|
|
||||||
|
|
||||||
# The values below this line do not need to be changed
|
|
||||||
DB_USERNAME=postgres
|
|
||||||
DB_DATABASE_NAME=immich
|
|
34
.devcontainer/server/container-compose-overrides.yml
Normal file
34
.devcontainer/server/container-compose-overrides.yml
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
services:
|
||||||
|
immich-server:
|
||||||
|
build:
|
||||||
|
target: dev-container-server
|
||||||
|
environment:
|
||||||
|
- IMMICH_SERVER_URL=http://127.0.0.1:2283/
|
||||||
|
volumes: !override # bind mount host to /workspaces/immich
|
||||||
|
- ..:/workspaces/immich
|
||||||
|
- cli_node_modules:/workspaces/immich/cli/node_modules
|
||||||
|
- e2e_node_modules:/workspaces/immich/e2e/node_modules
|
||||||
|
- open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
|
||||||
|
- server_node_modules:/workspaces/immich/server/node_modules
|
||||||
|
- web_node_modules:/workspaces/immich/web/node_modules
|
||||||
|
- ${UPLOAD_LOCATION}/photos:/workspaces/immich/server/upload
|
||||||
|
- ${UPLOAD_LOCATION}/photos/upload:/workspaces/immich/server/upload/upload
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
|
||||||
|
database:
|
||||||
|
volumes:
|
||||||
|
- ${UPLOAD_LOCATION}/postgres:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# Node modules for each service to avoid conflicts and ensure consistent dependencies
|
||||||
|
cli_node_modules:
|
||||||
|
e2e_node_modules:
|
||||||
|
open_api_node_modules:
|
||||||
|
server_node_modules:
|
||||||
|
web_node_modules:
|
||||||
|
|
||||||
|
# UPLOAD_LOCATION must be set to a absolute path or vol-upload
|
||||||
|
vol-upload:
|
||||||
|
|
||||||
|
# DB_DATA_LOCATION must be set to a absolute path or vol-database
|
||||||
|
vol-database:
|
|
@ -4,6 +4,8 @@
|
||||||
source /immich-devcontainer/common.sh
|
source /immich-devcontainer/common.sh
|
||||||
|
|
||||||
echo "Starting Nest API Server"
|
echo "Starting Nest API Server"
|
||||||
|
echo
|
||||||
|
echo "Ignore errors while the postConfigure script is running which installs the node_modules dependncies"
|
||||||
|
|
||||||
cd "${IMMICH_WORKSPACE}/server" || (
|
cd "${IMMICH_WORKSPACE}/server" || (
|
||||||
echo workspace not found
|
echo workspace not found
|
|
@ -1,71 +0,0 @@
|
||||||
services:
|
|
||||||
|
|
||||||
immich-devcontainer-server:
|
|
||||||
build:
|
|
||||||
dockerfile: server/Dockerfile
|
|
||||||
target: dev-container
|
|
||||||
context: ../..
|
|
||||||
hostname: immich-devcontainer-server
|
|
||||||
extra_hosts:
|
|
||||||
- 'host.docker.internal:host-gateway'
|
|
||||||
environment:
|
|
||||||
- IMMICH_SERVER_URL=http://127.0.0.1:2283/
|
|
||||||
- REDIS_PORT=6400
|
|
||||||
- REDIS_HOSTNAME=immich-devcontainer-redis
|
|
||||||
- DB_PORT=5500
|
|
||||||
- DB_HOSTNAME=immich-devcontainer-database
|
|
||||||
volumes:
|
|
||||||
# bind mount host to /workspaces/immich
|
|
||||||
- ../..:/workspaces/immich
|
|
||||||
- cli_node_modules:/workspaces/immich/cli/node_modules
|
|
||||||
- e2e_node_modules:/workspaces/immich/e2e/node_modules
|
|
||||||
- open_api_node_modules:/workspaces/immich/open-api/typescript-sdk/node_modules
|
|
||||||
- server_node_modules:/workspaces/immich/server/node_modules
|
|
||||||
- web_node_modules:/workspaces/immich/web/node_modules
|
|
||||||
- ${UPLOAD_LOCATION}:/workspaces/immich/server/upload
|
|
||||||
|
|
||||||
immich-devcontainer-redis:
|
|
||||||
extends:
|
|
||||||
file: ../../docker/docker-compose.dev.yml
|
|
||||||
service: redis
|
|
||||||
container_name: immich-devcontainer-redis
|
|
||||||
command: redis-server --port 6400
|
|
||||||
healthcheck:
|
|
||||||
test: redis-cli -p 6400 ping || exit 1
|
|
||||||
|
|
||||||
immich-devcontainer-database:
|
|
||||||
extends:
|
|
||||||
file: ../../docker/docker-compose.dev.yml
|
|
||||||
service: database
|
|
||||||
container_name: immich-devcontainer-database
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
environment:
|
|
||||||
PGPORT: 5500
|
|
||||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
|
||||||
POSTGRES_USER: ${DB_USERNAME}
|
|
||||||
POSTGRES_DB: ${DB_DATABASE_NAME}
|
|
||||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
|
||||||
volumes:
|
|
||||||
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
|
|
||||||
ports:
|
|
||||||
- 5432:5432
|
|
||||||
healthcheck:
|
|
||||||
test: >-
|
|
||||||
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1; Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
|
|
||||||
interval: 5m
|
|
||||||
start_period: 5m
|
|
||||||
command: >-
|
|
||||||
postgres -c shared_preload_libraries=vectors.so -c 'search_path="$$user", public, vectors' -c logging_collector=on -c max_wal_size=2GB -c shared_buffers=512MB -c wal_compression=on
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
cli_node_modules:
|
|
||||||
e2e_node_modules:
|
|
||||||
open_api_node_modules:
|
|
||||||
server_node_modules:
|
|
||||||
web_node_modules:
|
|
||||||
immich:
|
|
||||||
# UPLOAD_LOCATION must be set to a absolute path or vol-upload
|
|
||||||
vol-upload:
|
|
||||||
# DB_DATA_LOCATION must be set to a absolute path or vol-database
|
|
||||||
vol-database:
|
|
4
.vscode/tasks.json
vendored
4
.vscode/tasks.json
vendored
|
@ -4,7 +4,7 @@
|
||||||
{
|
{
|
||||||
"label": "Immich API Server (Nest)",
|
"label": "Immich API Server (Nest)",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "[ -f /immich-devcontainer/startNestApiServer.sh ] && /immich-devcontainer/startNestApiServer.sh || exit 0",
|
"command": "[ -f /immich-devcontainer/container-start-backend.sh ] && /immich-devcontainer/container-start-backend.sh || exit 0",
|
||||||
"presentation": {
|
"presentation": {
|
||||||
"echo": true,
|
"echo": true,
|
||||||
"reveal": "always",
|
"reveal": "always",
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
{
|
{
|
||||||
"label": "Immich Web Server (Vite)",
|
"label": "Immich Web Server (Vite)",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "[ -f /immich-devcontainer/startViteWebServer.sh ] && /immich-devcontainer/startViteWebServer.sh || exit 0",
|
"command": "[ -f /immich-devcontainer/container-start-frontend.sh ] && /immich-devcontainer/container-start-frontend.sh || exit 0",
|
||||||
"presentation": {
|
"presentation": {
|
||||||
"echo": true,
|
"echo": true,
|
||||||
"reveal": "always",
|
"reveal": "always",
|
||||||
|
|
|
@ -16,23 +16,49 @@ ENV PATH="${PATH}:/usr/src/app/bin" \
|
||||||
NVIDIA_VISIBLE_DEVICES=all
|
NVIDIA_VISIBLE_DEVICES=all
|
||||||
ENTRYPOINT ["tini", "--", "/bin/sh"]
|
ENTRYPOINT ["tini", "--", "/bin/sh"]
|
||||||
|
|
||||||
FROM dev AS dev-container
|
FROM dev AS dev-container-server
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install sudo inetutils-ping openjdk-11-jre-headless \
|
apt-get install sudo inetutils-ping openjdk-11-jre-headless \
|
||||||
vim nano \
|
vim nano \
|
||||||
-y --no-install-recommends --fix-missing
|
-y --no-install-recommends --fix-missing
|
||||||
|
|
||||||
RUN usermod -aG sudo node
|
RUN usermod -aG sudo node
|
||||||
RUN echo "node ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
RUN echo "node ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
RUN mkdir -p /workspaces/immich
|
RUN mkdir -p /workspaces/immich
|
||||||
RUN chown node -R /workspaces
|
RUN chown node -R /workspaces
|
||||||
|
|
||||||
RUN mkdir /immich-devcontainer && chown node -R /immich-devcontainer
|
RUN mkdir /immich-devcontainer && chown node -R /immich-devcontainer
|
||||||
COPY --chmod=777 ../.devcontainer/server/common.sh /immich-devcontainer/common.sh
|
COPY --chmod=777 ../.devcontainer/server/container-common.sh /immich-devcontainer/common.sh
|
||||||
COPY --chmod=777 ../.devcontainer/server/postCreate.sh /immich-devcontainer/postCreate.sh
|
COPY --chmod=777 ../.devcontainer/server/container-server-post-create.sh /immich-devcontainer/container-server-post-create.sh
|
||||||
COPY --chmod=777 ../.devcontainer/server/startNestApiServer.sh /immich-devcontainer/startNestApiServer.sh
|
COPY --chmod=777 ../.devcontainer/server/container-start-backend.sh /immich-devcontainer/container-start-backend.sh
|
||||||
COPY --chmod=777 ../.devcontainer/server/startViteWebServer.sh /immich-devcontainer/startViteWebServer.sh
|
COPY --chmod=777 ../.devcontainer/server/container-start-frontend.sh /immich-devcontainer/container-start-frontend.sh
|
||||||
|
|
||||||
|
FROM dev-container-server AS dev-container-mobile
|
||||||
|
# Flutter SDK
|
||||||
|
# https://flutter.dev/docs/development/tools/sdk/releases?tab=linux
|
||||||
|
ENV FLUTTER_CHANNEL="stable"
|
||||||
|
ENV FLUTTER_VERSION="3.29.3"
|
||||||
|
ENV FLUTTER_HOME=/flutter
|
||||||
|
ENV PATH=${PATH}:${FLUTTER_HOME}/bin
|
||||||
|
|
||||||
|
# Flutter SDK
|
||||||
|
RUN mkdir -p ${FLUTTER_HOME} \
|
||||||
|
&& curl -C - --output flutter.tar.xz https://storage.googleapis.com/flutter_infra_release/releases/${FLUTTER_CHANNEL}/linux/flutter_linux_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.tar.xz \
|
||||||
|
&& tar -xf flutter.tar.xz --strip-components=1 -C ${FLUTTER_HOME} \
|
||||||
|
&& rm flutter.tar.xz \
|
||||||
|
&& chown -R node ${FLUTTER_HOME}
|
||||||
|
|
||||||
|
USER node
|
||||||
|
RUN sudo apt-get update \
|
||||||
|
&& wget -qO- https://dcm.dev/pgp-key.public | sudo gpg --dearmor -o /usr/share/keyrings/dcm.gpg \
|
||||||
|
&& echo 'deb [signed-by=/usr/share/keyrings/dcm.gpg arch=amd64] https://dcm.dev/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list \
|
||||||
|
&& sudo apt-get update \
|
||||||
|
&& sudo apt-get install dcm -y
|
||||||
|
|
||||||
|
COPY --chmod=777 ../.devcontainer/mobile/container-mobile-post-create.sh /immich-devcontainer/container-mobile-post-create.sh
|
||||||
|
|
||||||
|
RUN dart --disable-analytics
|
||||||
|
|
||||||
FROM dev AS prod
|
FROM dev AS prod
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue