update
continuous-integration/drone/push Build is passing Details

feature
thest1tch 2 years ago
parent 1ffa65fe53
commit 27051d3afb

@ -73,4 +73,28 @@ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
Хотя это может быть незначительным риском для безопасности, все должно быть в порядке, если применяются другие [меры безопасности Docker](https://www.smarthomebeginner.com/traefik-docker-security-best-practices/) .
`sudo timedatectl set-timezone America/New\_York`
`sudo timedatectl set-timezone America/New\_York`
# Команды Docker
Существует множество команд docker и docker compose, и их описание не является целью этого поста. Вы можете увидеть все возможные команды, используя следующую команду:
`docker`
Но вот несколько команд **docker** и **docker compose** для начала:
- `sudo docker info` — информация об установке докера.
- `sudo docker search IMAGE_NAME `— поиск определенных образов/контейнеров.
- `sudo docker start CONTAINER_NAME` — запустить один или несколько контейнеров.
- `sudo docker stop CONTAINER_NAME` — остановить один или несколько контейнеров.
- `sudo docker restart CONTAINER_NAME` — перезапустить один или несколько контейнеров.
- `sudo docker top CONTAINER_NAME` — просмотр запущенных процессов контейнера.
- `sudo docker rm CONTAINER_NAME` — удалить один или несколько контейнеров.
- `sudo docker pull CONTAINER_NAME` — извлекать обновленные образы из Docker Hub.
- `sudo docker network ls` — просмотреть все определенные сети докеров.
- `sudo docker ps -a` — просмотреть все запущенные контейнеры.
- `sudo docker logs CONTAINER_NAME` — просмотр журналов одного, нескольких или всех контейнеров.
- `sudo docker-compose up -d CONTAINER_NAME` — запустить определенные или все службы, определенные в docker-compose.yml.
- `sudo docker-compose down CONTAINER_NAME` — остановить определенные или все службы, определенные в docker-compose.yml.
Обратите внимание, что в большинстве случаев **CONTAINER\_NAME** не является обязательным, и команда применяется ко всем возможным контейнерам, если имя контейнера не указано.

@ -0,0 +1,109 @@
[Github](https://github.com/motioneye-project/motioneye)
Docker-compose:
```yaml
# Login: admin / *no password*
motioneye:
image: ccrisan/motioneye:master-amd64
container_name: motioneye
restart: always
networks:
- traefik_net
ports:
- "8081:8081"
- "8082:8082"
- "8765:8765"
security_opt:
- no-new-privileges:true
volumes:
- $DOCKERDIR_APP/motioneye/etc:/etc/motioneye
- /opt/cloud/motioneye:/var/lib/motioneye
- /etc/localtime:/etc/localtime:ro
environment:
- PUID=$PUID
- PGID=$PGID
- TZ=$TZ
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.motioneye-rtr.entrypoints=https"
- "traefik.http.routers.motioneye-rtr.rule=Host(`motioneye.$DOMAINNAME`)"
## Middlewares
- "traefik.http.routers.motioneye-rtr.middlewares=secure-chain@file"
## HTTP Services
- "traefik.http.routers.motioneye-rtr.service=motioneye-svc"
- "traefik.http.services.motioneye-svc.loadbalancer.server.port=8765"
```
Docker-file:
```docker
FROM debian:buster-slim
LABEL maintainer="Marcus Klein <himself@kleini.org>"
ARG BUILD_DATE
ARG VCS_REF
LABEL org.label-schema.build-date=$BUILD_DATE \
org.label-schema.docker.dockerfile="extra/Dockerfile" \
org.label-schema.license="GPLv3" \
org.label-schema.name="motioneye" \
org.label-schema.url="https://github.com/ccrisan/motioneye/wiki" \
org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.vcs-type="Git" \
org.label-schema.vcs-url="https://github.com/ccrisan/motioneye.git"
# By default, run as root.
ARG RUN_UID=0
ARG RUN_GID=0
COPY . /tmp/motioneye
RUN echo "deb http://snapshot.debian.org/archive/debian/$(date +%Y%m%d) buster contrib non-free" >>/etc/apt/sources.list && \
apt-get update && \
DEBIAN_FRONTEND="noninteractive" apt-get -t buster --yes --option Dpkg::Options::="--force-confnew" --no-install-recommends install \
curl \
ffmpeg \
libmicrohttpd12 \
libpq5 \
lsb-release \
mosquitto-clients \
python-jinja2 \
python-pil \
python-pip \
python-pip-whl \
python-pycurl \
python-setuptools \
python-tornado \
python-tz \
python-wheel \
v4l-utils \
motion \
default-libmysqlclient-dev && \
# Change uid/gid of user/group motion to match our desired IDs. This will
# make it easier to use execute motion as our desired user later.
sed -i -e "s/^\(motion:[^:]*\):[0-9]*:[0-9]*:\(.*\)/\1:${RUN_UID}:${RUN_GID}:\2/" /etc/passwd && \
sed -i -e "s/^\(motion:[^:]*\):[0-9]*:\(.*\)/\1:${RUN_GID}:\2/" /etc/group && \
pip install /tmp/motioneye && \
# Cleanup
rm -rf /tmp/motioneye && \
apt-get purge --yes python-setuptools python-wheel && \
apt-get autoremove --yes && \
apt-get --yes clean && rm -rf /var/lib/apt/lists/* && rm -f /var/cache/apt/*.bin
ADD extra/motioneye.conf.sample /usr/share/motioneye/extra/
# R/W needed for motioneye to update configurations
VOLUME /etc/motioneye
# Video & images
VOLUME /var/lib/motioneye
CMD test -e /etc/motioneye/motioneye.conf || \
cp /usr/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf ; \
# We need to chown at startup time since volumes are mounted as root. This is fugly.
chown motion:motion /var/run /var/log /etc/motioneye /var/lib/motioneye /usr/share/motioneye/extra ; \
su -g motion motion -s /bin/bash -c "/usr/local/bin/meyectl startserver -c /etc/motioneye/motioneye.conf"
EXPOSE 8765
```

@ -0,0 +1,83 @@
Redis - как пишут на википедии, **Redis** (от англ. **remote dictionary server**) — резидентная система управления базами данных класса NoSQL с открытым исходным кодом, работающая со структурами данных типа «ключ — значение». Используется как для баз данных, так и для реализации кэшей, брокеров сообщений.
Простыми словами, Redis это размещаемое в памяти хранилище ключ-значение, обычно используемое для кэшей и подобных механизмов ускорения сетевых приложений.
Redis быстр. Когда я говорю быстр, я имею в виду Быстр с заглавной буквы Б. Это по существу *memcached* с более продуманными типами данных, нежели просто строковые значения. Даже некоторые продвинутые операции такие, как пересечение множеств, выборка диапазонов zset, ослепительно быстры. Есть все поводы использовать Redis для быстроменяющихся активно запрашиваемых данных. Он довольно часто используется в качестве кэша, который может быть перестроен по данным из резервной базы данных. Это мощная замена memcached предоставляющая более продвинутое кэширование для различных видов хранимых вами данных.
## Создание сети
Создать сеть в docker можно с помощью нескольких способов. Я предпочитаю явно через консоль ввести все параметры, тк эту сеть будут использовать и другие контейнеры, а так же, возможно, другие стеки. Создаем базовую сеть `direct_net` со следующими параметрами: 
| --- | --- |
| Name | redis\_network |
| Subnet | 172.18.5.0/24 |
| Gateway | 172.18.5.254 |
Команда для создания через консоль:
`docker network create --gateway 172.18.1.254 --subnet 172.18.1.0/24 direct_net`
Создаем файл .env, где будем хранить переменные. 
`nano .env`
Заполняем его
```plaintext
$DOCKERDIR_APP=/opt/docker/appdata
```
Создаем файл docker-compose.yml 
`nano docker-compose.yml`
Заполняем его
```yaml
version: "3.7"
networks:
direct_net:
external: true
services:
## Redis - Key-value Store
redis:
container_name: redis
image: redis:latest
restart: always
entrypoint: redis-server --appendonly yes
networks:
- direct_net
# ports:
# - "6379:6379"
security_opt:
- no-new-privileges:true
sysctls:
net.core.somaxconn: '65535'
volumes:
- $DOCKERDIR_APP/redis/data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
```
в дополнение, можем добавить сервис для управления нашим redis - rediscommander:
```yaml
## Redis Commander - Redis Management Tool
rediscommander:
container_name: rediscommander
image: rediscommander/redis-commander:latest
restart: always
depends_on:
- redis
networks:
- direct_net
ports:
- "8081:8081"
security_opt:
- no-new-privileges:true
environment:
- REDIS_HOST=redis
```

@ -9,6 +9,8 @@ nav:
- Install Docker Compose: docker-compose.md
- Linx Server: docker-compose/linx-server.md
- Samba: docker-compose/samba.md
- Redis: docker-compose/redis.md
- MotionEye: docker-compose/motioneye.md
- Media Server:
- Plex: docker-compose/plex.md
- Plex Meta Manager: docker-compose/plex-mm.md

Loading…
Cancel
Save