-
Notifications
You must be signed in to change notification settings - Fork 10
Docker Compose Examples
DevilsCoder edited this page Apr 13, 2024
·
17 revisions
version: '3.5'
volumes:
photoprism-originals1:
driver_opts:
type: cifs
o: "addr=192.xxx.xx.xxx,username=SAMBA-USER,password=SAMBA-PASS,rw"
device: "//192.xxx.xx.xxx/MyPhotosDirectory/"
photoprism-originals2:
driver_opts:
type: cifs
o: "addr=192.xxx.xx.xxx,username=Samber-USER2,password=SAMBA-PASS2,rw"
device: "//192.xxx.xx.xxx/MyPhotosDirectory2/"
services:
photoprism:
image: photoprism/photoprism:latest
volumes:
- "photoprism-originals1:/photoprism/originals/1"
- "photoprism-originals2:/photoprism/originals/2"
depends_on:
- mariadb
security_opt:
- seccomp:unconfined
- apparmor:unconfined
ports:
- "2342:2342" # HTTP port (host:container)
environment:
PHOTOPRISM_ADMIN_PASSWORD: "insecure" # !!! PLEASE CHANGE YOUR INITIAL "admin" PASSWORD !!!
PHOTOPRISM_SITE_URL: "" # public server URL incl http:// or https:// and /path, :port is optional
PHOTOPRISM_ORIGINALS_LIMIT: 12000 # file size limit for originals in MB (increase for high-res video)
PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip)
PHOTOPRISM_DEBUG: "false" # run in debug mode, shows additional log messages
PHOTOPRISM_PUBLIC: "false" # no authentication required, disables password protection
PHOTOPRISM_READONLY: "false" # don't modify originals folder; disables import, upload, and delete
PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features
PHOTOPRISM_DISABLE_CHOWN: "false" # disables storage permission updates on startup
PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server
PHOTOPRISM_DISABLE_SETTINGS: "false" # disables Settings in Web UI
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow
PHOTOPRISM_DISABLE_FACES: "false" # disables facial recognition
PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification
PHOTOPRISM_DARKTABLE_PRESETS: "false" # enables Darktable presets and disables concurrent RAW conversion
PHOTOPRISM_DETECT_NSFW: "false" # flag photos as private that MAY be offensive (requires TensorFlow)
PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive
PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB or MySQL database server hostname (:port is optional)
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name
PHOTOPRISM_DATABASE_PASSWORD: "insecure" # MariaDB or MySQL database user password
PHOTOPRISM_SITE_TITLE: ""
PHOTOPRISM_SITE_CAPTION: ""
PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: ""
HOME: "/photoprism"
working_dir: "/photoprism"
## Database Server (recommended)
mariadb:
restart: unless-stopped
image: mariadb:10.6
security_opt:
- seccomp:unconfined
- apparmor:unconfined
command: mysqld --innodb-buffer-pool-size=128M --lower-case-table-names=1 --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
volumes:
- "~/photoprism/mariadb/db:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: insecure
MYSQL_DATABASE: photoprism
MYSQL_USER: photoprism
MYSQL_PASSWORD: insecure
Save as docker-compose.yml
version: '2'
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- C:\Tools\Nextcloud\db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=SQLROOTPASSWORD
- MYSQL_PASSWORD=MYSQLPASSOWRD
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:production
restart: always
ports:
- 9111:80
links:
- db
volumes:
- J:/Nextcloud:/data
- J:/Nextcloud:/var/www/html
environment:
- MYSQL_DPASSWORD=MYSQLPASSWORD
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
# - OVERWRITECLIURL=https://memories.mydomain.com #only enable these after you have enable your reverse proxy
# - OVERWRITEPROTOCOL=https #only enable these after you have enable your reverse proxy
#ONLY REMOVE THE # FOR HWA IF YOU HAVE A GPU AND WANT TO USE MEMORIES APP INSIDE NEXTCLOUD
# go-vod:
# image: radialapps/go-vod
# restart: always
# depends_on:
# - app
# devices:
# - /dev/dri:/dev/dri # VA-API (omit for NVENC)
# environment:
# - NEXTCLOUD_HOST=https://NEXTCLOUD.DOMAIN.COM
# - NEXTCLOUD_ALLOW_INSECURE=1 # (self-signed certs or no HTTPS)
# volumes:
#this is where you want your files stored on nextcloud
# - J:/Nextcloud:/data
#this is where your configs and all nextcloud system files are stored
# - J:/Nextcloud:/var/www/html
#only enable if you have a nvidia 1xxx or later and want to use it to transcode
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: 1
# capabilities: [gpu]
FROM nextcloud:production
RUN apt-get update \
&& apt-get install -y \
cmake \
ffmpeg \
ghostscript \
git \
imagemagick \
libbz2-dev \
liblapack-dev \
libopenblas-dev \
libx11-dev \
sudo \
nano \
&& apt-get clean
RUN git clone https://github.com/davisking/dlib.git \
&& cd dlib/dlib \
&& mkdir build \
&& cd build \
&& cmake -DBUILD_SHARED_LIBS=ON .. \
&& make \
&& make install
RUN git clone https://github.com/goodspb/pdlib.git /usr/src/php/ext/pdlib
RUN docker-php-ext-install pdlib
RUN docker-php-ext-install bz2
RUN echo '12 * * * * php /var/www/html/occ face:background_job' >> /var/spool/cron/crontabs/www-data
RUN echo '37 * * * * php /var/www/html/occ preview:pre-generate' >> /var/spool/cron/crontabs/www-data
RUN apt update \
&& apt install -y wget gnupg2 unzip
# Enable repo and install dlib
#RUN echo "deb https://repo.delellis.com.ar bullseye bullseye" > /etc/apt/sources.list.d/20-pdlib.list \
# && wget -qO - https://repo.delellis.com.ar/repo.gpg.key | apt-key add -
#RUN apt update \
# && apt install -y libdlib-dev
# Install pdlib extension
RUN wget https://github.com/goodspb/pdlib/archive/master.zip \
&& mkdir -p /usr/src/php/ext/ \
&& unzip -d /usr/src/php/ext/ master.zip \
&& rm master.zip
RUN docker-php-ext-install pdlib-master
# Increase memory limits
RUN echo memory_limit=1024M > /usr/local/etc/php/conf.d/memory-limit.ini
# These last lines are just for testing the extension.. You can delete them.
RUN wget https://github.com/matiasdelellis/pdlib-min-test-suite/archive/master.zip \
&& unzip -d /tmp/ master.zip \
&& rm master.zip
RUN cd /tmp/pdlib-min-test-suite-master \
&& make
RUN set -ex; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
ffmpeg \
ghostscript \
libmagickcore-6.q16-6-extra \
procps \
smbclient \
supervisor \
# libreoffice \
; \
rm -rf /var/lib/apt/lists/*
RUN set -ex; \
\
savedAptMark="$(apt-mark showmanual)"; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
libbz2-dev \
libc-client-dev \
libkrb5-dev \
libsmbclient-dev \
; \
\
docker-php-ext-configure imap --with-kerberos --with-imap-ssl; \
docker-php-ext-install \
bz2 \
imap \
; \
pecl install smbclient; \
docker-php-ext-enable smbclient; \
\
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
apt-mark auto '.*' > /dev/null; \
apt-mark manual $savedAptMark; \
ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \
| awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \
| sort -u \
| xargs -r dpkg-query --search \
| cut -d: -f1 \
| sort -u \
| xargs -rt apt-mark manual; \
\
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
rm -rf /var/lib/apt/lists/*
RUN mkdir -p \
/var/log/supervisord \
/var/run/supervisord \
;
COPY supervisord.conf /
ENV NEXTCLOUD_UPDATE=1
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]
FROM tensorflow/tensorflow:latest-gpu
WORKDIR /tf-knugs # This specifies the directory to work
RUN pip install --upgrade pip
RUN pip install --upgrade -r requirements.txt
EXPOSE 3008
ENTRYPOINT ["jupyter", "lab","--ip=0.0.0.0","--allow-root","--no-browser"]
[supervisord]
nodaemon=true
logfile=/var/log/supervisord/supervisord.log
pidfile=/var/run/supervisord/supervisord.pid
childlogdir=/var/log/supervisord/
logfile_maxbytes=50MB ; maximum size of logfile before rotation
logfile_backups=10 ; number of backed up logfiles
loglevel=error
[program:apache2]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=apache2-foreground
[program:cron]
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
command=/cron.sh
version: '3'
services:
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=America/Chicago
ports:
- 5055:5055
volumes:
- /path/to/appdata/config:/app/config
restart: unless-stopped
version: '3'
services:
jellystat-db:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: MyPassword
volumes:
- C:/Tools/Jellystat/postgres-data:/var/lib/postgresql/data # Mounting the volume
jellystat:
image: cyfershepard/jellystat:latest
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: MyPassword
POSTGRES_IP: jellystat-db
POSTGRES_PORT: 5432
JWT_SECRET: 'MyPassword'
ports:
- "3000:3000" #Server Port
- "3004:3004" #websocket port
volumes:
- C:/Tools/Jellystat/backup-data:/app/backend/backup-data # Mounting the volume
depends_on:
- jellystat-db
restart: unless-stopped
networks:
default:
version: "3"
services:
front:
image: tombursch/kitchenowl-web:latest
environment:
- FRONT_URL=https://yoururl.com
# - BACK_URL=back:5000 # Optional should not be changed unless you know what youre doing
ports:
- "9090:80"
depends_on:
- back
networks:
- default
back:
image: tombursch/kitchenowl:latest
restart: unless-stopped
ports: # Optional and only needed when only hosting the http backend
- "9191:80"
networks:
- default
environment:
- JWT_SECRET_KEY=MYSECRETKEY?
- FRONT_URL=http://localhost:9090
volumes:
- kitchenowl_data:/data
volumes:
kitchenowl_data:
networks:
default: