jackyzy823 / standardnotes-app-images

Provide standardnotes/web docker image and android apk
The Unlicense
16 stars 5 forks source link

Example docker-compose #3

Closed webysther closed 1 year ago

webysther commented 1 year ago
version: '3.9'

services:
  standardnotes-web:
    image: ghcr.io/jackyzy823/standardnotes-web:3.165.10
    container_name: app-notes-web
    env_file: ../standard-notes/.env
    cpuset: '0'
    expose:
      - 80
    networks:
      standard-notes:
    depends_on:
      standardnotes-api:
        condition: service_healthy
    healthcheck:
      test: curl -s http://localhost
      timeout: 10s
      interval: 5s
    restart: unless-stopped

  standardnotes-api:
    image: standardnotes/server:9be3517093f8dd7bbdd7507c1e2ff059e6c9a889
    container_name: app-notes-api
    env_file: ../standard-notes/.env
    cpuset: '0'
    expose:
      - 3000
      - 3104
    volumes:
      - "$LOG:/var/lib/server/logs"
      - "$STORAGE/uploads:/opt/bundled/files/packages/files/dist/uploads"
    networks:
      standard-notes:
      standard-notes-backend:
      standard-notes-db:
    depends_on:
      localstack:
        condition: service_healthy
      standardnotes-db:
        condition: service_healthy
      standardnotes-cache:
        condition: service_healthy
    healthcheck:
      test: curl -s http://localhost:3000
      timeout: 10s
      interval: 5s
      start_period: 60s
    restart: unless-stopped

  localstack:
    image: localstack/localstack:1.4
    container_name: app-notes-aws
    env_file: ../standard-notes/.env
    cpuset: '0'
    expose:
      - 4566
    volumes:
      - "$STORAGE/localstack_bootstrap.sh:$LS_INIT/localstack_bootstrap.sh"
    networks:
      standard-notes-backend:
      standard-notes-db:
    healthcheck:
      test: curl -s http://localhost:4566/_localstack/health
      timeout: 10s
      interval: 5s
      start_period: 60s
    restart: unless-stopped

  standardnotes-db:
    image: mysql:8
    container_name: db-mysql-notes
    env_file: ../standard-notes/.env
    user: "${PUID}:${PGID}"
    cpuset: '1'
    expose:
      - 3306
    volumes:
      - "$STORAGE/mysql:/var/lib/mysql"
    networks:
      standard-notes-db:
    healthcheck:
      test: [
        "CMD", 
        "mysqladmin",
        "ping", 
        "-h", "localhost",
        '-u', 'root', 
        '-p$$MYSQL_ROOT_PASSWORD'
      ]
      timeout: 20s
      retries: 10
      start_period: 10s
    restart: unless-stopped

  standardnotes-cache:
    image: redis:7
    container_name: db-redis-notes
    env_file: ../standard-notes/.env
    cpuset: '1'
    user: "${PUID}:${PGID}"
    volumes:
      - "$STORAGE/redis:/data"
    expose:
      - 6379
    networks:
      standard-notes-db:
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 20s
      timeout: 3s
    restart: unless-stopped

networks:
  standard-notes:
    name: standard-notes
  standard-notes-backend:
    name: standard-notes-backend
  standard-notes-db:
    name: standard-notes-db
APP_HOST=https://standardnotes.example.com
DEFAULT_SYNC_SERVER=https://standardnotes.example.com/api/
DEFAULT_FILES_HOST=https://standardnotes.example.com/file/
ENABLE_UNFINISHED_FEATURES=false

# Localstack

SERVICES=sns,sqs
HOSTNAME_EXTERNAL=localstack
LS_LOG=warn
LS_INIT=/etc/localstack/init/ready.d

# MySQL

LANG=C.UTF-8
MYSQL_DATABASE=standard_notes_db
MYSQL_USER=std_notes_user
MYSQL_ROOT_PASSWORD=
MYSQL_PASSWORD=
MYSQL_INITDB_CHARSET=utf8mb4

# server

PUID=1000
PGID=1000
TZ=Europe/Rome
STORAGE=/volume1/docker/standard-notes
LOG=/volume1/log/docker/standard-notes
PUBLIC_FILES_SERVER_URL=https://standardnotes.example.com/file

DB_HOST=standardnotes-db
DB_PORT=3306
DB_USERNAME=std_notes_user
DB_PASSWORD=
DB_DATABASE=standard_notes_db
DB_TYPE=mysql

REDIS_PORT=6379
REDIS_HOST=standardnotes-cache
CACHE_TYPE=redis

AUTH_JWT_SECRET=
AUTH_SERVER_ENCRYPTION_SERVER_KEY=
VALET_TOKEN_SECRET=
webysther commented 1 year ago

Do you think is a good ideia to put on readme?

jackyzy823 commented 1 year ago

Thank you. I'll pin this issue to the top in case someone needs this.