add server
Browse files- Dockerfile +17 -9
- nginx.conf +36 -0
- start.sh +46 -0
Dockerfile
CHANGED
@@ -1,28 +1,36 @@
|
|
1 |
FROM python:3.9
|
2 |
|
|
|
3 |
RUN useradd -m -u 1000 aim_user
|
4 |
|
5 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
USER aim_user
|
7 |
|
8 |
-
# Set home
|
9 |
ENV HOME=/home/aim_user \
|
10 |
PATH=/home/aim_user/.local/bin:$PATH
|
11 |
|
12 |
-
# Set the working directory
|
13 |
WORKDIR $HOME
|
14 |
|
15 |
-
# install
|
16 |
-
RUN pip install aim
|
17 |
|
18 |
ENTRYPOINT ["/bin/sh", "-c"]
|
19 |
|
20 |
COPY aim_repo.tar.gz .
|
21 |
RUN tar xvzf aim_repo.tar.gz
|
|
|
22 |
# have to run `aim init` in the directory that stores aim data for
|
23 |
# otherwise `aim up` will prompt for confirmation to create the directory itself.
|
24 |
-
# We run aim listening on 0.0.0.0 to expose all ports.
|
25 |
-
#
|
26 |
-
# `aim up` but explicit is better than implicit.
|
27 |
-
CMD ["aim up --host 0.0.0.0 --port 7860 --workers 2"]
|
28 |
|
|
|
|
|
|
1 |
FROM python:3.9
|
2 |
|
3 |
+
# Create user first
|
4 |
RUN useradd -m -u 1000 aim_user
|
5 |
|
6 |
+
# Perform root operations: Install packages, copy system configs
|
7 |
+
RUN apt-get update && apt-get install -y nginx procps && rm -rf /var/lib/apt/lists/*
|
8 |
+
COPY nginx.conf /etc/nginx/nginx.conf
|
9 |
+
COPY start.sh /start.sh
|
10 |
+
RUN chmod +x /start.sh
|
11 |
+
|
12 |
+
# Now switch to the final user
|
13 |
USER aim_user
|
14 |
|
15 |
+
# Set home and path
|
16 |
ENV HOME=/home/aim_user \
|
17 |
PATH=/home/aim_user/.local/bin:$PATH
|
18 |
|
19 |
+
# Set the working directory
|
20 |
WORKDIR $HOME
|
21 |
|
22 |
+
# install aim (as aim_user)
|
23 |
+
RUN pip install aim --no-cache-dir
|
24 |
|
25 |
ENTRYPOINT ["/bin/sh", "-c"]
|
26 |
|
27 |
COPY aim_repo.tar.gz .
|
28 |
RUN tar xvzf aim_repo.tar.gz
|
29 |
+
|
30 |
# have to run `aim init` in the directory that stores aim data for
|
31 |
# otherwise `aim up` will prompt for confirmation to create the directory itself.
|
32 |
+
# We run aim listening on 0.0.0.0 to expose all ports.
|
33 |
+
# Port 43800 for UI, 53800 for Server. Nginx listens on 7860.
|
|
|
|
|
34 |
|
35 |
+
# Run the startup script as aim_user
|
36 |
+
CMD ["/start.sh"]
|
nginx.conf
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
worker_processes 1;
|
2 |
+
pid /home/aim_user/nginx_run/nginx.pid; # Needs a path writable by aim_user
|
3 |
+
error_log /home/aim_user/nginx_logs/error.log warn; # Needs a path writable by aim_user
|
4 |
+
|
5 |
+
events {
|
6 |
+
worker_connections 1024;
|
7 |
+
}
|
8 |
+
|
9 |
+
http {
|
10 |
+
access_log /home/aim_user/nginx_logs/access.log; # Needs a path writable by aim_user
|
11 |
+
|
12 |
+
server {
|
13 |
+
listen 7860;
|
14 |
+
server_name localhost;
|
15 |
+
|
16 |
+
location / {
|
17 |
+
proxy_pass http://127.0.0.1:43800;
|
18 |
+
proxy_set_header Host $host;
|
19 |
+
proxy_set_header X-Real-IP $remote_addr;
|
20 |
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
21 |
+
proxy_set_header X-Forwarded-Proto $scheme;
|
22 |
+
# Add WebSocket support for Aim UI
|
23 |
+
proxy_http_version 1.1;
|
24 |
+
proxy_set_header Upgrade $http_upgrade;
|
25 |
+
proxy_set_header Connection "upgrade";
|
26 |
+
}
|
27 |
+
|
28 |
+
location /api/ {
|
29 |
+
proxy_pass http://127.0.0.1:53800/api/; # Pass requests to aim server API
|
30 |
+
proxy_set_header Host $host;
|
31 |
+
proxy_set_header X-Real-IP $remote_addr;
|
32 |
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
33 |
+
proxy_set_header X-Forwarded-Proto $scheme;
|
34 |
+
}
|
35 |
+
}
|
36 |
+
}
|
start.sh
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
|
3 |
+
# Create directories for nginx logs and pid file within $HOME
|
4 |
+
mkdir -p $HOME/nginx_run $HOME/nginx_logs
|
5 |
+
|
6 |
+
# Start Aim UI in the background
|
7 |
+
echo "Starting Aim UI on port 43800..."
|
8 |
+
# Run directly as aim_user
|
9 |
+
aim up --host 0.0.0.0 --port 43800 --repo $HOME &
|
10 |
+
AIM_UP_PID=$!
|
11 |
+
|
12 |
+
# Start Aim Server in the background
|
13 |
+
echo "Starting Aim Server on port 53800..."
|
14 |
+
# Run directly as aim_user
|
15 |
+
aim server --host 0.0.0.0 --port 53800 --repo $HOME &
|
16 |
+
AIM_SERVER_PID=$!
|
17 |
+
|
18 |
+
# Wait a few seconds for services to potentially start
|
19 |
+
sleep 5
|
20 |
+
|
21 |
+
# Check if aim processes are still running
|
22 |
+
if ! ps -p $AIM_UP_PID > /dev/null; then
|
23 |
+
echo "Aim UI failed to start." >&2
|
24 |
+
# exit 1 # Optional: exit if a service fails
|
25 |
+
fi
|
26 |
+
|
27 |
+
if ! ps -p $AIM_SERVER_PID > /dev/null; then
|
28 |
+
echo "Aim Server failed to start." >&2
|
29 |
+
# exit 1 # Optional: exit if a service fails
|
30 |
+
fi
|
31 |
+
|
32 |
+
echo "Aim services seem to be starting..."
|
33 |
+
|
34 |
+
# Start nginx in the foreground using the system config file
|
35 |
+
# Run directly as aim_user (no sudo needed)
|
36 |
+
echo "Starting nginx..."
|
37 |
+
nginx -c /etc/nginx/nginx.conf -g 'daemon off;'
|
38 |
+
|
39 |
+
# If nginx exits, stop the background aim processes
|
40 |
+
echo "Nginx exited. Stopping Aim services..."
|
41 |
+
# Use kill without sudo, as processes are owned by aim_user
|
42 |
+
kill $AIM_UP_PID $AIM_SERVER_PID
|
43 |
+
# Wait for processes to ensure they are terminated
|
44 |
+
wait $AIM_UP_PID $AIM_SERVER_PID
|
45 |
+
|
46 |
+
echo "Exiting."
|