Полное развертывание NBICS через Docker
Шаг 1. Создание структуры файлов проекта
Создайте папку для проекта, например my_project
, и внутри неё организуйте следующую структуру:
my_project/
│
├── docker-compose.yml
├── .env
├── sql/
│ └── backup/ # Папка для бэкапа базы данных
├── site/ # Каталог вашего ASP.NET Core приложения
│ ├── appsettings.json
│ └── ...
└── nginx/
└── default.conf
Шаг 2. Конфигурация .env
файла
Создайте файл .env
и настройте переменные окружения:
# SQL Server
MSSQL_SA_PASSWORD=Linux123
MSSQL_USER=wcf
MSSQL_USER_PASSWORD=Linux123
MSSQL_DB_NAME=VSM_School_sample_Web
# Nginx
DOMAIN=school-sample.nbics.net
# ASP.NET Core
APP_ENV=Production
Шаг 3. Конфигурация docker-compose.yml
Создайте файл docker-compose.yml
для определения всех сервисов:
version: '3.8'
services:
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
container_name: mssql
environment:
ACCEPT_EULA: "Y"
MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD}
ports:
- "1433:1433"
volumes:
- ./sql/backup:/var/opt/mssql/backup
- mssql_data:/var/opt/mssql
site:dotnet:
build:image: context: ./sitemcr.microsoft.com/dotnet/aspnet:7.0
container_name: sitedotnet
environment:
ASPNETCORE_ENVIRONMENT: ${APP_ENV}
ConnectionStrings__DefaultConnection: "Server=mssql;Database=${MSSQL_DB_NAME};User ID=${MSSQL_USER};Password=${MSSQL_USER_PASSWORD}"
ports:
- "5000:5000"
volumes:
- ./site:/app
working_dir: /app
command: ["dotnet", "VSM.Web.Core.dll"]
depends_on:
- mssql
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- nginx_data:/var/www
volumes:
mssql_data:
nginx_data:
Шаг 4. Настройка SQL Server и базы данных
- Поместите файл бэкапа в
sql/backup/
. - Внесите скрипты для восстановления базы данных в отдельный файл, например,
init.sql
(настраиваем автоматически):
USE [master];
RESTORE DATABASE [VSM_School_sample_Web] FROM DISK = N'/var/opt/mssql/backup/your_backup_file.bak'
WITH FILE = 1,
MOVE N'VSM_School_sample_Web' TO N'/var/opt/mssql/data/VSM_School_sample_Web.mdf',
MOVE N'VSM_School_sample_Web_Log' TO N'/var/opt/mssql/log/VSM_School_sample_Web.ldf',
NOUNLOAD,
STATS = 5;
GO
CREATE LOGIN [wcf] WITH PASSWORD = 'Linux123', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;
GO
Шаг 5. Настройка Nginx
Создайте файл nginx/default.conf
:
server {
listen 80;
server_name ${DOMAIN};
location / {
proxy_pass http://site:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Шаг 6. Запуск Docker
-
Запустите все сервисы:
docker-compose up -d
2. Убедитесь, что все контейнеры работают:
docker ps
Шаг 7. Настройка SSL
Для установки SSL-сертификата:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d ${DOMAIN}