# Docker

# Неудачные варианты docker-compose

# UVDesk

https://github.com/uvdesk/community-skeleton/wiki/dockerize-helpdesk-project

```plaintext
version: '3'

services:
    uvdesk:
        image: camojiet/uvdesk
        tty: true
        depends_on:
          - db
        environment:
            MYSQL_USER: uvdesk_user
            MYSQL_PASSWORD: xxxxxxxxxxxxxxxxx
            MYSQL_ROOT_PASSWORD: xxxxxxxxxxxxxxxxx
            MYSQL_DATABASE: uvdesk_db
        ports:
            - 80:80
        restart: always
        volumes:
            - "app_data:/var/www:rw"
    db:
        command: "--default-authentication-plugin=mysql_native_password"
        environment:
          - MYSQL_ROOT_PASSWORD=xxxxxxxxxxxxxxxxx
          - MYSQL_DATABASE=uvdesk_db
          - MYSQL_USER=uvdesk_user
          - MYSQL_PASSWORD=xxxxxxxxxxxxxxxxx
        image: "mysql:5.7"
        restart: always
        volumes:
          - "db_data:/var/lib/mysql"
volumes:
  app_data:
    driver: local
  db_data:
    driver: local
```

# Подготовка lxc под docker

## Docker + LXC + ZFS

Оказывается, ставший по умолчанию в docker overlay2 docker storage driver не поддерживает работу с ZFS

### Решение №1

Использовать zfs как блочное устройство и форматить его в ext4. После этого overlay2 работает с ним без проблем.  
[https://docs.erlipan.dev/books/mywiki/page/docker-in-unprivileged-lxc-container-with-zfs](https://docs.erlipan.dev/books/mywiki/page/docker-in-unprivileged-lxc-container-with-zfs)  
Вариант не очень красивый, но рабочий.

### Решение №2

Использовать fuse-overlayfs

```
 cat /etc/docker/daemon.json
{
  "storage-driver": "fuse-overlayfs"
}
```

## lxc + docker + overlay2 (без zfs)

Прикладываю ссылку, чтобы не потерять, она касается только lxc + docker + overlay2 (без zfs)  
[https://singularo.com/docker-inside-proxmox-lxc-container](https://singularo.com/docker-inside-proxmox-lxc-container)

# Шпаргалка Docker

## Обновить контейнера docker compose

```yaml
docker compose pull
docker compose up --force-recreate --build -d
docker image prune -f
```

## Очистить docker

```
docker system prune -af
```

[https://liberbear.com/posts/docker-prune-list/](https://liberbear.com/posts/docker-prune-list/)

## Собрать и отправить образ

```bash
docker build -t camojiet/1c-single:8.5.1.1343 -t camojiet/1c-single:latest --no-cache .
docker push camojiet/1c-single:8.5.1.1343
docker push camojiet/1c-single:latest
```