Установка китайского облака KodCloud/KodBox в Docker
Установите Docker
1. Среда установки
Установите и запустите службу docker, новая версия docker автоматически установит docker-compose-plugin
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable docker && systemctl start docker
Использование Docker Compose, после запуска docker compose up Up вы можете использовать docker compose ls для просмотра местоположения профиля
docker compose ls
Подсказывать:
Если команда
docker composeне существует, вы можете вручную установитьdocker-composeи заменить его последующей командой.
curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose
2. Быстрый запуск режима HTTP
Заметка:
Сначала создадим директорию в качестве директории проекта, а затем все команды будут выполняться в этой директории
mkdir /kodbox && cd /kodbox- Вам нужно установить пароль базы данных в
db.env, аMYSQL_ROOT_PASSWORDв yml нужно дополнить.
-
Создание файла для установки переменной окружения базы данных
vim db.envMYSQL_PASSWORD= MYSQL_DATABASE=kodbox MYSQL_USER=kodbox -
Создание файла docker-compose.yml, в котором настраиваются сопоставленные порты и постоянные каталоги
-
vim docker-compose.ymlversion: '3.5' services: db: image: mariadb:10.6 restart: always command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - "./db:/var/lib/mysql" #./db是数据库持久化目录,可以修改 # - "./etc/mysql/conf.d:/etc/mysql/conf.d" #增加自定义mysql配置 environment: - MYSQL_ROOT_PASSWORD= - MARIADB_AUTO_UPGRADE=1 - MARIADB_DISABLE_UPGRADE_BACKUP=1 env_file: - db.env app: image: kodcloud/kodbox restart: always ports: - 80:80 #左边80是使用端口,可以修改 volumes: - "./site:/var/www/html" #./site是站点目录位置,可以修改 environment: - MYSQL_HOST=db - REDIS_HOST=redis env_file: - db.env depends_on: - db - redis redis: image: redis:alpine restart: always
Добавьте пользовательскую конфигурацию MySQL:
mkdir -p ./etc/mysql/conf.d && vim ./etc/mysql/conf.d/custom.cnf
Перейдите в директорию проекта и выполните команду docker compose up -d startup, чтобы автоматически вытащить контейнер и запустить его
docker compose up -d
Контейнеры Docker перечислены в списке, и вы можете видеть, что 3 контейнера запущены
docker ps
80/tcp, 9000/tcp kodbox_app_1
Если вам необходимо остановить обслуживание
docker compose down
Поскольку база данных и kodbox были смонтированы с постоянным каталогом, их можно перезапустить при необходимости, не беспокоясь о потере данных
docker compose up -d
В соответствии с подключенными портами, настроенными в файле docker-compose.yml, обратитесь к мастеру настройки для инициализации системы.
3. Настройте сертификат HTTPS
Способ 1: Обратный прокси хоста Nginx
server {
listen 80;
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:!MD5;
add_header Strict-Transport-Security "max-age=31536000";
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:2m;
ssl_session_timeout 1h;
ssl_session_tickets off;
client_max_body_size 0;
proxy_buffering off;
access_log /var/log/nginx/proxy_access.log main;
error_log /var/log/nginx/proxy_error.log info;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_connect_timeout 3600;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass http://127.0.0.1:80/;
}
}
Способ 2: Настройка сертификата для контейнера
Создайте директорию сертификатов и добавьте в нее загруженный SSL-сертификат NGINX
mkdir /etc/kodbox/ssl
Переименование сертификата
mv xxx.pem fullchain.pem
mv xxx.key privkey.pem
Добавьте сопоставление каталога сертификатов в HTTP-docker-compose.yml /etc/kodbox/ssl:/etc/nginx/ssl и контейнер автоматически включит конфигурацию https при обнаружении существования файла сертификата.
mkdir kodbox && cd kodbox
vim docker-compose.yaml
version: '3.5'
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- "./db:/var/lib/mysql" #./db是数据库持久化目录,可以修改
environment:
- MYSQL_ROOT_PASSWORD=
- MARIADB_AUTO_UPGRADE=1
- MARIADB_DISABLE_UPGRADE_BACKUP=1
env_file:
- db.env
app:
image: kodcloud/kodbox
restart: always
ports:
- 443:443 #左边80是使用端口,可以修改
volumes:
- "/etc/kodbox/ssl:/etc/nginx/ssl" #左边配置主机证书目录
- "./site:/var/www/html" #./site是站点目录位置,可以修改
environment:
- MYSQL_HOST=db
- REDIS_HOST=redis
env_file:
- db.env
depends_on:
- db
- redis
redis:
image: redis:alpine
restart: always
Затем перейдите в директорию проекта и запустите команду docker compose up -d для запуска
4. Прочие вопросы
Настройка сети контейнера и диапазона IP-адресов
Обратитесь к provide-static-ip-to-docker-containers-via -docker-compose
version: '3.5'
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- "./db:/var/lib/mysql" #./db是数据库持久化目录,可以修改
environment:
- MYSQL_ROOT_PASSWORD=
- MARIADB_AUTO_UPGRADE=1
- MARIADB_DISABLE_UPGRADE_BACKUP=1
env_file:
- db.env
networks:
vpcbr:
ipv4_address: 10.5.0.5
app:
image: kodcloud/kodbox
restart: always
ports:
- 80:80 #左边80是使用端口,可以修改
volumes:
- "./site:/var/www/html" #./site是站点目录位置,可以修改
environment:
- MYSQL_HOST=db
- REDIS_HOST=redis
env_file:
- db.env
networks:
vpcbr:
ipv4_address: 10.5.0.6
depends_on:
- db
- redis
redis:
image: redis:alpine
restart: always
networks:
vpcbr:
ipv4_address: 10.5.0.7
networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1
Подключение тома NFS
Подсказывать:
- Сервер NFS должен быть настроен
no_root_squash- После запуска необходимо предоставить контейнеру права на чтение и запись в mount directorydocker
docker exec -it kodbox-app-1 chown -R nginx:nginx /mnt/nfs
version: '3.5'
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- "./db:/var/lib/mysql" #./db是数据库持久化目录,可以修改
environment:
- MYSQL_ROOT_PASSWORD=
- MARIADB_AUTO_UPGRADE=1
- MARIADB_DISABLE_UPGRADE_BACKUP=1
env_file:
- db.env
app:
image: kodcloud/kodbox
restart: always
ports:
- 80:80 #左边80是使用端口,可以修改
volumes:
- "./site:/var/www/html" #./site是站点目录位置,可以修改
- nfs_mount:/mnt/nfs
environment:
- MYSQL_HOST=db
- REDIS_HOST=redis
env_file:
- db.env
depends_on:
- db
- redis
redis:
image: redis:alpine
restart: always
volumes:
nfs_mount:
driver_opts:
type: "nfs"
o: "addr=192.168.1.4,nolock,rw"
device: ":/path/to-dir"
Подключение тома хранилища CIFS (SMB)
Обратитесь к docker_compose_cifs_mounts
# 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: '3.5'
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- "./db:/var/lib/mysql" #./db是数据库持久化目录,可以修改
environment:
- MYSQL_ROOT_PASSWORD=
- MARIADB_AUTO_UPGRADE=1
- MARIADB_DISABLE_UPGRADE_BACKUP=1
env_file:
- db.env
app:
image: kodcloud/kodbox
restart: always
ports:
- 80:80 #左边80是使用端口,可以修改
volumes:
- "./site:/var/www/html" #./site是站点目录位置,可以修改
- cifs_mount:/mnt/cifs
environment:
- MYSQL_HOST=db
- REDIS_HOST=redis
- PUID=100
- PGID=101
env_file:
- db.env
depends_on:
- db
- redis
redis:
image: redis:alpine
restart: always
volumes:
cifs_mount:
driver: local
driver_opts:
type: cifs
device: //<REMOTE_IP>/<PATH_TO_LIBRARY>
o: "username=<USERNAME>,password=<PASSWORD>,uid=100,gid=101"