- 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