From 4b8cc7b53339d84e032299cd6c2206350cb31410 Mon Sep 17 00:00:00 2001 From: Mert <101130780+mertalev@users.noreply.github.com> Date: Wed, 19 Jul 2023 00:41:02 -0400 Subject: [PATCH] chore: docker compose for prod build (#3333) * added docker compose for prod build * updated makefile --- Makefile | 4 +- docker/docker-compose.prod.yml | 114 +++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 docker/docker-compose.prod.yml diff --git a/Makefile b/Makefile index fb3d017119..7cdd1915b9 100644 --- a/Makefile +++ b/Makefile @@ -23,10 +23,10 @@ test-e2e: docker-compose -f ./docker/docker-compose.test.yml --env-file ./docker/.env.test -p immich-test-e2e up --renew-anon-volumes --abort-on-container-exit --exit-code-from immich-server-test --remove-orphans --build prod: - docker-compose -f ./docker/docker-compose.yml up --build -V --remove-orphans + docker-compose -f ./docker/docker-compose.prod.yml up --build -V --remove-orphans prod-scale: - docker-compose -f ./docker/docker-compose.yml up --build -V --scale immich-server=3 --scale immich-microservices=3 --remove-orphans + docker-compose -f ./docker/docker-compose.prod.yml up --build -V --scale immich-server=3 --scale immich-microservices=3 --remove-orphans api: cd ./server && npm run api:generate diff --git a/docker/docker-compose.prod.yml b/docker/docker-compose.prod.yml new file mode 100644 index 0000000000..e3223ee994 --- /dev/null +++ b/docker/docker-compose.prod.yml @@ -0,0 +1,114 @@ +version: "3.8" + +services: + immich-server: + container_name: immich_server + image: immich-server:latest + build: + context: ../server + dockerfile: Dockerfile + command: ["./start-server.sh"] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + env_file: + - .env + depends_on: + - redis + - database + - typesense + + immich-machine-learning: + container_name: immich_machine_learning + image: immich-machine-learning:latest + build: + context: ../machine-learning + dockerfile: Dockerfile + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - model-cache:/cache + env_file: + - .env + restart: always + + immich-microservices: + container_name: immich_microservices + image: immich-microservices:latest + build: + context: ../server + dockerfile: Dockerfile + command: ["./start-microservices.sh"] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + env_file: + - .env + depends_on: + - database + - immich-server + - typesense + restart: always + + immich-web: + container_name: immich_web + image: immich-web:latest + build: + context: ../web + dockerfile: Dockerfile + env_file: + - .env + restart: always + depends_on: + - immich-server + + typesense: + container_name: immich_typesense + image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd + environment: + - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} + - TYPESENSE_DATA_DIR=/data + logging: + driver: none + volumes: + - tsdata:/data + restart: always + + redis: + container_name: immich_redis + image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 + restart: always + + database: + container_name: immich_postgres + image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441 + env_file: + - .env + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + PG_DATA: /var/lib/postgresql/data + volumes: + - pgdata:/var/lib/postgresql/data + restart: always + + immich-proxy: + container_name: immich_proxy + image: immich-proxy:latest + environment: + # Make sure these values get passed through from the env file + - IMMICH_SERVER_URL + - IMMICH_WEB_URL + build: + context: ../nginx + dockerfile: Dockerfile + ports: + - 2283:8080 + logging: + driver: none + depends_on: + - immich-server + restart: always + +volumes: + pgdata: + model-cache: + tsdata: