automated-setup 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/compose_file/api_template.yaml +51 -0
- package/compose_file/full_template.yaml +64 -0
- package/compose_file/ui_template.yaml +17 -0
- package/config/nginx/conf.d/default.conf +48 -0
- package/config/nginx/error/access.log +28 -0
- package/config/nginx/error/error.log +399 -0
- package/config/php/local.ini +1948 -0
- package/config/php/pool.d/www.conf +490 -0
- package/docker_file/angular/Dockerfile +11 -0
- package/docker_file/astro/Dockerfile +12 -0
- package/docker_file/bun/Dockerfile +12 -0
- package/docker_file/django/Dockerfile +18 -0
- package/docker_file/dotnet/Dockerfile +11 -0
- package/docker_file/elixir/Dockerfile +20 -0
- package/docker_file/golang/Dockerfile +14 -0
- package/docker_file/java/Dockerfile +15 -0
- package/docker_file/kotlin/Dockerfile +15 -0
- package/docker_file/laravel/Dockerfile +24 -0
- package/docker_file/nextjs/Dockerfile +12 -0
- package/docker_file/nodejs/Dockerfile +13 -0
- package/docker_file/python/Dockerfile +17 -0
- package/docker_file/react/Dockerfile +11 -0
- package/docker_file/ruby/Dockerfile +18 -0
- package/docker_file/rust/Dockerfile +18 -0
- package/docker_file/svelte/Dockerfile +11 -0
- package/docker_file/vue/Dockerfile +11 -0
- package/package.json +28 -0
- package/setup.sh +143 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
FROM python:3.12-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /var/www/html/api
|
|
4
|
+
|
|
5
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
6
|
+
gcc \
|
|
7
|
+
libpq-dev \
|
|
8
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
9
|
+
|
|
10
|
+
COPY requirements.txt ./
|
|
11
|
+
RUN pip install --no-cache-dir -r requirements.txt
|
|
12
|
+
|
|
13
|
+
COPY . .
|
|
14
|
+
|
|
15
|
+
EXPOSE 8000
|
|
16
|
+
|
|
17
|
+
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
FROM ruby:3.3-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /var/www/html/api
|
|
4
|
+
|
|
5
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
6
|
+
build-essential \
|
|
7
|
+
libpq-dev \
|
|
8
|
+
nodejs \
|
|
9
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
10
|
+
|
|
11
|
+
COPY Gemfile Gemfile.lock ./
|
|
12
|
+
RUN bundle install
|
|
13
|
+
|
|
14
|
+
COPY . .
|
|
15
|
+
|
|
16
|
+
EXPOSE 3000
|
|
17
|
+
|
|
18
|
+
CMD ["rails", "server", "-b", "0.0.0.0"]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
FROM rust:1.81-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /var/www/html/api
|
|
4
|
+
|
|
5
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
6
|
+
pkg-config \
|
|
7
|
+
libssl-dev \
|
|
8
|
+
gcc \
|
|
9
|
+
libc6-dev \
|
|
10
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
11
|
+
|
|
12
|
+
RUN cargo install cargo-watch
|
|
13
|
+
|
|
14
|
+
COPY . .
|
|
15
|
+
|
|
16
|
+
EXPOSE 8080
|
|
17
|
+
|
|
18
|
+
CMD ["cargo", "watch", "-x", "run"]
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "automated-setup",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A powerful, dynamic tool to scaffold full-stack development environments with Docker.",
|
|
5
|
+
"main": "setup.sh",
|
|
6
|
+
"bin": {
|
|
7
|
+
"automated-setup": "setup.sh"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"scaffold",
|
|
14
|
+
"docker",
|
|
15
|
+
"fullstack",
|
|
16
|
+
"automation",
|
|
17
|
+
"cli"
|
|
18
|
+
],
|
|
19
|
+
"author": "Dxcode",
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"files": [
|
|
22
|
+
"setup.sh",
|
|
23
|
+
"compose_file/",
|
|
24
|
+
"config/",
|
|
25
|
+
"docker_file/",
|
|
26
|
+
"README.md"
|
|
27
|
+
]
|
|
28
|
+
}
|
package/setup.sh
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
# Usage: ./setup.sh PROJECT_NAME API_LANG UI_LANG [DB_TYPE]
|
|
5
|
+
# Example: ./setup.sh my-app laravel vue postgres
|
|
6
|
+
|
|
7
|
+
if [ "$#" -lt 3 ]; then
|
|
8
|
+
echo "Usage: $0 PROJECT_NAME API_LANG UI_LANG [DB_TYPE]"
|
|
9
|
+
echo "Example: $0 my-app laravel vue postgres"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
PROJECT_NAME=$1
|
|
14
|
+
API_LANG=$2
|
|
15
|
+
UI_LANG=$3
|
|
16
|
+
DB_TYPE=${4:-none}
|
|
17
|
+
|
|
18
|
+
SCRIPT_ROOT_DIR=$(dirname "$(readlink -f "$0")")
|
|
19
|
+
|
|
20
|
+
if [ -d "$PROJECT_NAME" ]; then
|
|
21
|
+
echo "Project '$PROJECT_NAME' already exists. Updating/using existing directory."
|
|
22
|
+
else
|
|
23
|
+
echo "Creating project: $PROJECT_NAME"
|
|
24
|
+
mkdir -p "$PROJECT_NAME"
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# Copy API Dockerfile
|
|
28
|
+
if [ "$API_LANG" != "none" ]; then
|
|
29
|
+
mkdir -p "$PROJECT_NAME/api"
|
|
30
|
+
if [ -d "$SCRIPT_ROOT_DIR/docker_file/$API_LANG" ]; then
|
|
31
|
+
echo "Copying $API_LANG Dockerfile to $PROJECT_NAME/api/"
|
|
32
|
+
cp -f "$SCRIPT_ROOT_DIR/docker_file/$API_LANG/Dockerfile" "$PROJECT_NAME/api/Dockerfile"
|
|
33
|
+
else
|
|
34
|
+
echo "Error: API language '$API_LANG' not supported (Dockerfile not found in docker_file/)."
|
|
35
|
+
exit 1
|
|
36
|
+
fi
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Copy UI Dockerfile
|
|
40
|
+
if [ "$UI_LANG" != "none" ]; then
|
|
41
|
+
mkdir -p "$PROJECT_NAME/ui"
|
|
42
|
+
if [ -d "$SCRIPT_ROOT_DIR/docker_file/$UI_LANG" ]; then
|
|
43
|
+
echo "Copying $UI_LANG Dockerfile to $PROJECT_NAME/ui/"
|
|
44
|
+
cp -f "$SCRIPT_ROOT_DIR/docker_file/$UI_LANG/Dockerfile" "$PROJECT_NAME/ui/Dockerfile"
|
|
45
|
+
else
|
|
46
|
+
echo "Error: UI language '$UI_LANG' not supported (Dockerfile not found in docker_file/)."
|
|
47
|
+
exit 1
|
|
48
|
+
fi
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
# Copy Nginx config
|
|
52
|
+
if [ "$API_LANG" != "none" ] && [ "$UI_LANG" != "none" ] || [ "$API_LANG" != "none" ]; then
|
|
53
|
+
echo "Copying Nginx configuration..."
|
|
54
|
+
mkdir -p "$PROJECT_NAME/infra/config/nginx/conf.d"
|
|
55
|
+
mkdir -p "$PROJECT_NAME/infra/config/nginx/error"
|
|
56
|
+
cp -f "$SCRIPT_ROOT_DIR/config/nginx/conf.d/default.conf" "$PROJECT_NAME/infra/config/nginx/conf.d/default.conf"
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Select and Copy Compose Template
|
|
60
|
+
TEMPLATE=""
|
|
61
|
+
if [ "$API_LANG" != "none" ] && [ "$UI_LANG" != "none" ]; then
|
|
62
|
+
TEMPLATE="full_template.yaml"
|
|
63
|
+
elif [ "$API_LANG" != "none" ]; then
|
|
64
|
+
TEMPLATE="api_template.yaml"
|
|
65
|
+
else
|
|
66
|
+
TEMPLATE="ui_template.yaml"
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
echo "Using template: $TEMPLATE"
|
|
70
|
+
cp -f "$SCRIPT_ROOT_DIR/compose_file/$TEMPLATE" "$PROJECT_NAME/compose.yaml"
|
|
71
|
+
|
|
72
|
+
# Handle Dynamic Database
|
|
73
|
+
if [ "$DB_TYPE" != "none" ] && [ "$API_LANG" != "none" ]; then
|
|
74
|
+
echo "Configuring database: $DB_TYPE..."
|
|
75
|
+
DB_IMAGE=""
|
|
76
|
+
DB_PORT=""
|
|
77
|
+
DB_ENV=""
|
|
78
|
+
|
|
79
|
+
case $DB_TYPE in
|
|
80
|
+
postgres)
|
|
81
|
+
DB_IMAGE="postgres:alpine"
|
|
82
|
+
DB_PORT="5432"
|
|
83
|
+
DB_ENV="- POSTGRES_DB=\${DB_DATABASE:-project_db}
|
|
84
|
+
- POSTGRES_USER=\${DB_USERNAME:-user}
|
|
85
|
+
- POSTGRES_PASSWORD=\${DB_PASSWORD:-password}"
|
|
86
|
+
;;
|
|
87
|
+
mysql)
|
|
88
|
+
DB_IMAGE="mysql:8.0"
|
|
89
|
+
DB_PORT="3306"
|
|
90
|
+
DB_ENV="- MYSQL_DATABASE=\${DB_DATABASE:-project_db}
|
|
91
|
+
- MYSQL_USER=\${DB_USERNAME:-user}
|
|
92
|
+
- MYSQL_PASSWORD=\${DB_PASSWORD:-password}
|
|
93
|
+
- MYSQL_ROOT_PASSWORD=\${DB_PASSWORD:-password}"
|
|
94
|
+
;;
|
|
95
|
+
mariadb)
|
|
96
|
+
DB_IMAGE="mariadb:latest"
|
|
97
|
+
DB_PORT="3306"
|
|
98
|
+
DB_ENV="- MYSQL_DATABASE=\${DB_DATABASE:-project_db}
|
|
99
|
+
- MYSQL_USER=\${DB_USERNAME:-user}
|
|
100
|
+
- MYSQL_PASSWORD=\${DB_PASSWORD:-password}
|
|
101
|
+
- MYSQL_ROOT_PASSWORD=\${DB_PASSWORD:-password}"
|
|
102
|
+
;;
|
|
103
|
+
mongo)
|
|
104
|
+
DB_IMAGE="mongo:latest"
|
|
105
|
+
DB_PORT="27017"
|
|
106
|
+
DB_ENV="- MONGO_INITDB_DATABASE=\${DB_DATABASE:-project_db}"
|
|
107
|
+
;;
|
|
108
|
+
redis)
|
|
109
|
+
DB_IMAGE="redis:alpine"
|
|
110
|
+
DB_PORT="6379"
|
|
111
|
+
DB_ENV="- REDIS_PASSWORD=\${DB_PASSWORD:-password}"
|
|
112
|
+
;;
|
|
113
|
+
*)
|
|
114
|
+
echo "Error: Database type '$DB_TYPE' not supported."
|
|
115
|
+
exit 1
|
|
116
|
+
;;
|
|
117
|
+
esac
|
|
118
|
+
|
|
119
|
+
# Use python for safe multiline replacement
|
|
120
|
+
python3 -c "import sys; content = open(sys.argv[1]).read(); content = content.replace('__DB_IMAGE__', sys.argv[2]).replace('__DB_PORT__', sys.argv[3]).replace('__DB_ENV__', sys.argv[4]); open(sys.argv[1], 'w').write(content)" "$PROJECT_NAME/compose.yaml" "$DB_IMAGE" "$DB_PORT" "$DB_ENV"
|
|
121
|
+
else
|
|
122
|
+
echo "No database configured or UI-only project."
|
|
123
|
+
# Remove DB service if it exists in template
|
|
124
|
+
sed -i '/ db:/,/^$/ d' "$PROJECT_NAME/compose.yaml"
|
|
125
|
+
sed -i '/volumes:/,/^$/ d' "$PROJECT_NAME/compose.yaml"
|
|
126
|
+
# Also remove DB env from API service if it exists
|
|
127
|
+
sed -i '/ environment:/,/^$/ d' "$PROJECT_NAME/compose.yaml"
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
# Check Docker
|
|
131
|
+
if ! command -v docker >/dev/null 2>&1; then
|
|
132
|
+
echo "Docker is not installed. Please install Docker first."
|
|
133
|
+
exit 1
|
|
134
|
+
fi
|
|
135
|
+
|
|
136
|
+
echo "------------------------------------------------"
|
|
137
|
+
echo "Project $PROJECT_NAME created successfully!"
|
|
138
|
+
echo "Components:"
|
|
139
|
+
[ "$API_LANG" != "none" ] && echo " - API: $API_LANG"
|
|
140
|
+
[ "$UI_LANG" != "none" ] && echo " - UI: $UI_LANG"
|
|
141
|
+
[ "$DB_TYPE" != "none" ] && [ "$API_LANG" != "none" ] && echo " - Persistence: $DB_TYPE"
|
|
142
|
+
echo "------------------------------------------------"
|
|
143
|
+
echo "Navigate to $PROJECT_NAME and run 'docker compose up' to start."
|