- Add Gitea Actions workflow for auto-deploy on push to main - Add Dockerfile (nginx:alpine based, with layer caching) - Add nginx.conf (gzip, autoindex, static caching) - Add .dockerignore - Migrate cache.html → cache/index.html for directory-based routing
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
.git
|
||||||
|
.gitea
|
||||||
|
LICENSE
|
||||||
|
README.md
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
name: Deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: aliyun
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build Docker Image
|
||||||
|
run: |
|
||||||
|
docker build \
|
||||||
|
--cache-from illustrated-algorithm:latest \
|
||||||
|
-t illustrated-algorithm:latest \
|
||||||
|
.
|
||||||
|
|
||||||
|
- name: Deploy Container
|
||||||
|
run: |
|
||||||
|
docker stop illustrated-algorithm 2>/dev/null || true
|
||||||
|
docker rm illustrated-algorithm 2>/dev/null || true
|
||||||
|
docker run -d \
|
||||||
|
--name illustrated-algorithm \
|
||||||
|
--restart unless-stopped \
|
||||||
|
-p 10000:80 \
|
||||||
|
illustrated-algorithm:latest
|
||||||
|
|
||||||
|
- name: Cleanup Dangling Images
|
||||||
|
run: docker image prune -f
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
FROM nginx:alpine
|
||||||
|
|
||||||
|
# Copy nginx config first (changes less often → cached layer)
|
||||||
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
|
||||||
|
# Copy site content
|
||||||
|
COPY . /usr/share/nginx/html/
|
||||||
|
|
||||||
|
# Remove non-web files from the image
|
||||||
|
RUN rm -rf /usr/share/nginx/html/.git \
|
||||||
|
/usr/share/nginx/html/.gitea \
|
||||||
|
/usr/share/nginx/html/.dockerignore \
|
||||||
|
/usr/share/nginx/html/Dockerfile \
|
||||||
|
/usr/share/nginx/html/LICENSE \
|
||||||
|
/usr/share/nginx/html/README.md
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
Vendored
+29
@@ -0,0 +1,29 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name _;
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
# Gzip compression
|
||||||
|
gzip on;
|
||||||
|
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
|
||||||
|
gzip_min_length 256;
|
||||||
|
|
||||||
|
# Static assets caching
|
||||||
|
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff2|ttf)$ {
|
||||||
|
expires 7d;
|
||||||
|
add_header Cache-Control "public, no-transform";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Auto-index at root for listing available pages
|
||||||
|
location / {
|
||||||
|
autoindex on;
|
||||||
|
autoindex_exact_size off;
|
||||||
|
autoindex_localtime on;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Each subdirectory serves its page
|
||||||
|
location ~ ^/([^/]+)/ {
|
||||||
|
try_files $uri $uri/ /$1/index.html;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user