photoprism/docker
Michael Mayer 556fed333c Docker: Remove "version: '3.5'" at the beginning of config files #4113
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-03-22 08:03:34 +01:00
..
ddns Docker: Remove "version: '3.5'" at the beginning of config files #4113 2024-03-22 08:03:34 +01:00
demo Docker: Remove "version: '3.5'" at the beginning of config files #4113 2024-03-22 08:03:34 +01:00
develop Develop: Update Dockerfiles for upcoming Ubuntu 24.04 base image #4084 2024-03-01 10:52:00 +01:00
dummy Develop: Update dummy-oidc and dummy-webdav images in docker-compose.yml 2024-01-31 21:30:09 +01:00
goproxy Docker: Remove GOPROXY and GODEBUG args from all images 2022-02-20 16:55:25 +01:00
photoprism Develop: Add Dockerfiles for upcoming Ubuntu 24.04 LTS base image #4084 2024-03-01 10:37:14 +01:00
tensorflow Build: Update author and copyright notices 2023-05-01 12:28:55 +02:00
README.md Docker: Update README.md 2023-11-02 12:11:58 +01:00

README.md

Dockerfiles for Development and Production

Dockerfiles are text documents that contain all commands a user could call in a terminal to assemble an application image.

Docker Compose uses human-friendly YAML files to configure all application services so you can easily start them with a single command.

See our Getting Started FAQ for alternative installation methods, for example using the tar.gz packages we provide for download at dl.photoprism.app/pkg/linux/.

What are the benefits of using Docker?

(1) Docker uses standard features of the Linux kernel. Containers are nothing new; Solaris Zones were released about 20 years ago and the chroot system call was introduced during development of Version 7 Unix in 1979. It is used ever since for hosting applications exposed to the public Internet. Modern Linux containers are an incremental improvement of this, based on standard functionality that is part of the kernel.

(2) Docker saves time through simplified deployment and testing. A main advantage of Docker is that application images can be easily made available to users via Internet. It provides a common standard across most operating systems and devices, which saves our team a lot of time that we can then spend more effectively, for example, providing support and developing one of the many features that users are waiting for.

(3) Dockerfiles are part of the source code repository. Human-readable and versioned Dockerfiles that are part of our public source code help avoid "works for me" moments and other unwelcome surprises by enabling us to have the exact same environment everywhere in development, staging, and production.

(4) Running applications in containers is more secure. Last but not least, virtually all file format parsers have vulnerabilities that just haven't been discovered yet. This is a known risk that can affect you even if your computer is not directly connected to the Internet. Running apps in a container with limited host access is an easy way to improve security without compromising performance and usability.

Why not use virtual machines instead?

A virtual machine with a dedicated operating system environment provides even more security, but usually has side effects such as lower performance and more difficult handling. Using a VM, however, doesn't prevent you from running containerized apps to get the best of both worlds. This is essentially what happens when you install Docker on virtual cloud servers and operating systems other than Linux.