Applications/docker/docker-compose.md
2024-04-03 22:04:13 +02:00

2.7 KiB

Docker-Compose

...

Networking

By default Docker-Compose will create a new network for the given compose file. You can change the behavior by defining custom networks in your compose file.

Create and assign custom network

... Example:

networks:
  custom-network:

services:
  app:
    networks:
      - custom-network

Use existing networks

If you want to use an existing Docker network for your compose files, you can add the external: true parameter in your compose file Example:

networks:
  existing-network:
    external: true

Volumes

Volumes are data storage objects that Docker containers can use for persistent storage.

Create and map static volume(s)

volumes:
  my-volume:

services:
  app:
    volumes:
      - my-volume:/path-in-container

These volumes are stored in /var/lib/docker/volumes.

Create volume that is a CIFS mount to external share

# Variables that will need to be changed:  
# <PUID> - User id for folder/file permissions  
# <PGID> - Group id for folder/file permissions  
# <PATH_TO_CONFIG> - Path where Unmanic will store config files  
# <PATH_TO_ENCODE_CACHE> - Cache path for in-progress encoding tasks  
# <REMOTE_IP> - Remote IP address of CIFS mount  
# <PATH_TO_LIBRARY> - Path in remote machine to be mounted as your library  
# <USERNAME> - Remote mount username  
# <PASSWORD> - Remote mount password  
#

---  
version: '2.4'  
services:  
  app:
    container_name: app_name  
    image: repo/app:tag  
    ports:  
      - 1234:1234
    environment:  
      - PUID=<PUID>  
      - PGID=<PGID>  
    volumes:
      - cifs_mount:/path-in-container

volumes:  
  cifs_mount:  
    driver: local  
    driver_opts:  
      type: cifs  
      device: //<REMOTE_IP>/<PATH_TO_LIBRARY>  
      o: "username=<USERNAME>,password=<PASSWORD>,vers=3.0,uid=<PUID>,gid=<PGID>"

Environment Variables

Environment variables can be defined in the environment section of a service in a Docker Compose file.

Define environment variables

services:
  app:
    environment:
      - ENV_VAR=value

Interpolate environment variables

Variable Description
${ENV_VAR} Value of ENV_VAR
${ENV_VAR:-default} Value of ENV_VAR if set and non-empty, otherwise default
${ENV_VAR-default} Value of ENV_VAR if set, otherwise default
${ENV_VAR:?error} Value of ENV_VAR if set and non-empty, otherwise exit with error
${ENV_VAR?error} Value of ENV_VAR if set, otherwise exit with error
${ENV_VAR:+replacement} replacement if ENV_VAR is set and non-empty, otherwise empty
${ENV_VAR+replacement} replacement if ENV_VAR is set, otherwise empty