0
0
Fork 0
mirror of https://github.com/crazy-max/diun.git synced 2025-01-26 08:48:50 +00:00
crazy-max_diun/docs/migration/v3-to-v4.md

261 lines
6.5 KiB
Markdown

# Diun v3 to v4
## Timeout value as duration
Only accept duration as timeout value (`10` becomes `10s`)
## Registry options enhancements
Configuration of registry options has changed:
??? example "v3"
```yaml
regopts:
myregistry:
username: fii
password: bor
insecure_tls: true
timeout: 5s
docker.io:
username: foo
password: bar
docker.io/crazymax:
username_file: /run/secrets/username
password_file: /run/secrets/password
```
??? example "v4"
```yaml
regopts:
- name: "myregistry"
username: fii
password: bor
insecureTLS: true
timeout: 5s
- name: "docker.io"
selector: image
username: foo
password: bar
- name: "docker.io/crazymax"
selector: image
usernameFile: /run/secrets/username
passwordFile: /run/secrets/password
```
Also, registry options can now be resolved automatically based on image name.
Take a look at the [Registry options configuration](../config/regopts.md) for more details.
## Configuration transposed into environment variables
All configuration is now transposed into environment variables. Take a look at the [documentation](../config/index.md#environment-variables) for more details.
`DIUN_DB` env var has been renamed `DIUN_DB_PATH` to follow environment variables transposition.
## All fields in configuration are now _camelCased_
In order to enable transposition into environmental variables, all fields in configuration are now _camelCased_:
* `notif.mail.insecure_skip_verify` > `notif.mail.insecureSkipVerify`
* `notif.rocketchat.user_id` > `notif.rocketchat.userID`
* `watch.first_check_notif` > `watch.firstCheckNotif`
* ...
??? example "v3"
```yaml
db:
path: diun.db
watch:
workers: 10
schedule: "0 */6 * * *"
first_check_notif: false
notif:
amqp:
host: localhost
port: 5672
username: guest
password: guest
exchange:
queue: queue
gotify:
endpoint: http://gotify.foo.com
token: Token123456
priority: 1
timeout: 10
mail:
host: localhost
port: 25
ssl: false
insecure_skip_verify: false
username:
password:
from:
to:
rocketchat:
endpoint: http://rocket.foo.com:3000
channel: "#general"
user_id: abcdEFGH012345678
token: Token123456
timeout: 10
script:
cmd: "myprogram"
args:
- "--anarg"
- "another"
slack:
webhook_url: https://hooks.slack.com/services/ABCD12EFG/HIJK34LMN/01234567890abcdefghij
teams:
webhook_url: https://outlook.office.com/webhook/ABCD12EFG/HIJK34LMN/01234567890abcdefghij
telegram:
token: aabbccdd:11223344
chat_ids:
- 123456789
- 987654321
webhook:
endpoint: http://webhook.foo.com/sd54qad89azd5a
method: GET
headers:
Content-Type: application/json
Authorization: Token123456
timeout: 10
regopts:
myregistry:
username: fii
password: bor
insecure_tls: true
timeout: 5s
docker.io:
username: foo
password: bar
docker.io/crazymax:
username_file: /run/secrets/username
password_file: /run/secrets/password
providers:
docker:
watch_stopped: true
swarm:
watch_by_default: true
file:
directory: ./imagesdir
```
??? example "v4"
```yaml
db:
path: diun.db
watch:
workers: 10
schedule: "0 */6 * * *"
firstCheckNotif: false
notif:
amqp:
host: localhost
port: 5672
username: guest
password: guest
queue: queue
gotify:
endpoint: http://gotify.foo.com
token: Token123456
priority: 1
timeout: 10s
mail:
host: localhost
port: 25
ssl: false
insecureSkipVerify: false
from: diun@example.com
to: webmaster@example.com
rocketchat:
endpoint: http://rocket.foo.com:3000
channel: "#general"
userID: abcdEFGH012345678
token: Token123456
timeout: 10s
script:
cmd: "myprogram"
args:
- "--anarg"
- "another"
slack:
webhookURL: https://hooks.slack.com/services/ABCD12EFG/HIJK34LMN/01234567890abcdefghij
teams:
webhookURL: https://outlook.office.com/webhook/ABCD12EFG/HIJK34LMN/01234567890abcdefghij
telegram:
token: aabbccdd:11223344
chatIDs:
- 123456789
- 987654321
webhook:
endpoint: http://webhook.foo.com/sd54qad89azd5a
method: GET
headers:
content-type: application/json
authorization: Token123456
timeout: 10s
regopts:
- name: "myregistry"
username: fii
password: bor
insecureTLS: true
timeout: 5s
- name: "docker.io"
selector: image
username: foo
password: bar
- name: "docker.io/crazymax"
selector: image
usernameFile: /run/secrets/username
passwordFile: /run/secrets/password
providers:
docker:
watchStopped: true
swarm:
watchByDefault: true
kubernetes:
namespaces:
- default
- production
file:
directory: ./imagesdir
```
## `/diun.yml` not loaded by default in Docker image
Following the transposition of the configuration into environment variables, the configuration file `/diun.yml`
is no longer loaded by default in the official Docker image.
If you want to load a configuration file through the Docker image you will have to declare the
[`CONFIG` environment variable with `serve` command](../usage/command-line.md#serve) pointing to the assigned
configuration file:
!!! tip
This is no longer required since version 4.2.0. Now configuration file can be loaded from
[default places](../config/index.md#configuration-file)
```yaml
name: diun
services:
diun:
image: crazymax/diun:latest
container_name: diun
command: serve
volumes:
- "./data:/data"
- "./diun.yml:/diun.yml:ro"
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- "CONFIG=/diun.yml"
- "TZ=Europe/Paris"
- "LOG_LEVEL=info"
- "LOG_JSON=false"
restart: always
```