65 lines
1.4 KiB
Bash
65 lines
1.4 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
if [ $# -ne 2 ]; then
|
|
echo "Использование: $0 <название> <порт>"
|
|
echo "Пример: $0 gitea 3000"
|
|
exit 1
|
|
fi
|
|
|
|
NAME=$1
|
|
PORT=$2
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$SCRIPT_DIR/.."
|
|
|
|
if [ ! -f "$PROJECT_ROOT/.env" ]; then
|
|
echo "Файл .env не найден. Запустите сначала ./scripts/00-init.sh"
|
|
exit 1
|
|
fi
|
|
|
|
export $(grep -v '^#' "$PROJECT_ROOT/.env" | xargs)
|
|
|
|
SERVICE_DIR="$PROJECT_ROOT/services/$NAME"
|
|
|
|
if [ -d "$SERVICE_DIR" ]; then
|
|
echo "Сервис '$NAME' уже существует!"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$SERVICE_DIR/data"
|
|
|
|
cat > "$SERVICE_DIR/docker-compose.yml" <<EOF
|
|
version: '3.8'
|
|
|
|
services:
|
|
$NAME:
|
|
image: nginx:alpine
|
|
container_name: $NAME
|
|
restart: unless-stopped
|
|
environment:
|
|
- VIRTUAL_HOST=$NAME.$LOCAL_DOMAIN,$NAME.$LOCAL_DOMAIN.local
|
|
$(if [ -n "$PUBLIC_DOMAIN" ]; then
|
|
echo " - LETSENCRYPT_HOST=$NAME.$PUBLIC_DOMAIN"
|
|
echo " - LETSENCRYPT_EMAIL=$LETSENCRYPT_EMAIL"
|
|
else
|
|
echo " # LETSENCRYPT_HOST="
|
|
echo " # LETSENCRYPT_EMAIL="
|
|
fi)
|
|
- VIRTUAL_PORT=$PORT
|
|
volumes:
|
|
- .//data
|
|
networks:
|
|
- devnet
|
|
depends_on:
|
|
- nginx-proxy
|
|
|
|
networks:
|
|
devnet:
|
|
external: true
|
|
EOF
|
|
|
|
echo "Сервис '$NAME' создан в $SERVICE_DIR"
|
|
echo "Запустите:"
|
|
echo " cd $PROJECT_ROOT"
|
|
echo " docker compose -f docker-compose.yml -f services/$NAME/docker-compose.yml up -d" |