mirror of
https://github.com/dagu-org/dagu.git
synced 2025-12-28 06:34:22 +00:00
fix: asset serving with base path and Docker storage location (#1037)
This commit is contained in:
parent
4ee3c50988
commit
4f70aa1291
@ -81,9 +81,10 @@ RUN set -eux; \
|
||||
# Delete the default ubuntu user
|
||||
RUN userdel -f ubuntu
|
||||
|
||||
WORKDIR /dagu
|
||||
WORKDIR /home/dagu
|
||||
ENV DAGU_HOST=0.0.0.0
|
||||
ENV DAGU_PORT=8080
|
||||
ENV DAGU_HOME=/var/lib/dagu
|
||||
ENV DAGU_TZ="Etc/UTC"
|
||||
ENV PUID=${USER_UID}
|
||||
ENV PGID=${USER_GID}
|
||||
|
||||
@ -55,9 +55,10 @@ RUN set -eux; \
|
||||
RUN echo "dagu ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/99-dagu \
|
||||
&& chmod 440 /etc/sudoers.d/99-dagu
|
||||
|
||||
WORKDIR /dagu
|
||||
WORKDIR /home/dagu
|
||||
ENV DAGU_HOST=0.0.0.0
|
||||
ENV DAGU_PORT=8080
|
||||
ENV DAGU_HOME=/var/lib/dagu
|
||||
ENV DAGU_TZ="Etc/UTC"
|
||||
ENV PUID=${USER_UID}
|
||||
ENV PGID=${USER_GID}
|
||||
|
||||
@ -82,9 +82,10 @@ RUN set -eux; \
|
||||
# Delete the default ubuntu user
|
||||
RUN userdel -f ubuntu
|
||||
|
||||
WORKDIR /dagu
|
||||
WORKDIR /home/dagu
|
||||
ENV DAGU_HOST=0.0.0.0
|
||||
ENV DAGU_PORT=8080
|
||||
ENV DAGU_HOME=/var/lib/dagu
|
||||
ENV DAGU_TZ="Etc/UTC"
|
||||
ENV PUID=${USER_UID}
|
||||
ENV PGID=${USER_GID}
|
||||
|
||||
@ -113,7 +113,7 @@ brew install dagu-org/brew/dagu
|
||||
docker run -d \
|
||||
--name dagu \
|
||||
-p 8080:8080 \
|
||||
-v ~/.dagu:/dagu \
|
||||
-v ~/.dagu:/var/lib/dagu \
|
||||
ghcr.io/dagu-org/dagu:latest dagu start-all
|
||||
```
|
||||
|
||||
|
||||
@ -13,9 +13,9 @@ services:
|
||||
- PGID=1000 # optional. default is 1000
|
||||
- DOCKER_GID=999 # optional. default is -1 and it will be ignored
|
||||
volumes:
|
||||
- dagu_config:/dagu
|
||||
- dagu:/var/lib/dagu
|
||||
volumes:
|
||||
dagu_config: {}
|
||||
dagu: {}
|
||||
#
|
||||
# For Docker in Docker (DinD) support, use the following configuration:
|
||||
# services:
|
||||
@ -30,7 +30,7 @@ volumes:
|
||||
# - DAGU_TZ=Asia/Tokyo # optional. default is local timezone
|
||||
# - DAGU_BASE_PATH=/dagu # optional. default is /
|
||||
# volumes:
|
||||
# - dagu_config:/dagu
|
||||
# - dagu:/var/lib/dagu
|
||||
# - /var/run/docker.sock:/var/run/docker.sock
|
||||
# user: "0:0"
|
||||
# entrypoint: [] # Override any default entrypoint
|
||||
|
||||
@ -62,7 +62,7 @@ Run with Docker:
|
||||
docker run -d \
|
||||
--name dagu \
|
||||
-p 8080:8080 \
|
||||
-v $HOME/.dagu:/dagu \
|
||||
-v $HOME/.dagu:/var/lib/dagu \
|
||||
-e DAGU_HOST=0.0.0.0 \
|
||||
-e DAGU_PORT=8080 \
|
||||
--restart always \
|
||||
@ -90,14 +90,14 @@ services:
|
||||
- PUID=1000 # User ID for file permissions
|
||||
- PGID=1000 # Group ID for file permissions
|
||||
volumes:
|
||||
- dagu:/dagu
|
||||
- dagu:/var/lib/dagu
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/api/v2/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
volumes:
|
||||
dagu_config: {}
|
||||
dagu: {}
|
||||
```
|
||||
|
||||
For custom configuration with separate volumes:
|
||||
@ -112,10 +112,10 @@ services:
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- ./dags:/dagu/dags
|
||||
- ./logs:/dagu/logs
|
||||
- ./data:/dagu/data
|
||||
- ./config.yaml:/dagu/config.yaml:ro
|
||||
- ./dags:/var/lib/dagu/dags
|
||||
- ./logs:/var/lib/dagu/logs
|
||||
- ./data:/var/lib/dagu/data
|
||||
- ./config.yaml:/var/lib/dagu/config.yaml:ro
|
||||
environment:
|
||||
- DAGU_HOST=0.0.0.0
|
||||
- DAGU_PORT=8080
|
||||
@ -144,7 +144,7 @@ services:
|
||||
- DAGU_TZ=Asia/Tokyo
|
||||
- DAGU_BASE_PATH=/
|
||||
volumes:
|
||||
- dagu:/dagu
|
||||
- dagu:/var/lib/dagu
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
user: "0:0"
|
||||
entrypoint: []
|
||||
@ -154,7 +154,7 @@ services:
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
volumes:
|
||||
dagu_config: {}
|
||||
dagu: {}
|
||||
```
|
||||
|
||||
### Kubernetes
|
||||
|
||||
@ -127,7 +127,7 @@ services:
|
||||
|
||||
# Volume mounts
|
||||
volumes:
|
||||
- dagu:/dagu
|
||||
- dagu:/var/lib/dagu
|
||||
|
||||
# Docker socket for Docker executor (optional)
|
||||
# - /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
@ -244,7 +244,7 @@ services:
|
||||
image: ghcr.io/dagu-org/dagu:latest
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- ./dags:/dagu
|
||||
- ./dags:/var/lib/dagu/dags
|
||||
user: "0:0" # Run as root for Docker access
|
||||
```
|
||||
|
||||
@ -346,4 +346,4 @@ steps:
|
||||
|
||||
- [Shell Executor](/features/executors/shell) - Run commands directly
|
||||
- [SSH Executor](/features/executors/ssh) - Execute on remote hosts
|
||||
- [Execution Control](/features/execution-control) - Advanced patterns
|
||||
- [Execution Control](/features/execution-control) - Advanced patterns
|
||||
|
||||
@ -18,7 +18,7 @@ This detects your OS/architecture and installs to `/usr/local/bin`.
|
||||
docker run -d \
|
||||
--name dagu \
|
||||
-p 8080:8080 \
|
||||
-v ~/.dagu:/dagu \
|
||||
-v ~/.dagu:/var/lib/dagu \
|
||||
ghcr.io/dagu-org/dagu:latest \
|
||||
dagu start-all
|
||||
```
|
||||
@ -62,11 +62,11 @@ services:
|
||||
environment:
|
||||
- DAGU_TZ=America/New_York
|
||||
- DAGU_PORT=8080 # optional. default is 8080
|
||||
- DAGU_HOME=/dagu # optional. default is /dagu
|
||||
- DAGU_HOME=/dagu # optional.
|
||||
- PUID=1000 # optional. default is 1000
|
||||
- PGID=1000 # optional. default is 1000
|
||||
volumes:
|
||||
- dagu:/dagu
|
||||
- dagu:/var/lib/dagu
|
||||
volumes:
|
||||
dagu: {}
|
||||
```
|
||||
@ -84,7 +84,7 @@ services:
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- dagu:/dagu
|
||||
- dagu:/var/lib/dagu
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
user: "0:0"
|
||||
volumes:
|
||||
|
||||
@ -60,7 +60,7 @@ dagu start hello
|
||||
|
||||
```bash [Docker]
|
||||
docker run --rm \
|
||||
-v ~/.dagu:/dagu \
|
||||
-v ~/.dagu:/var/lib/dagu \
|
||||
ghcr.io/dagu-org/dagu:latest \
|
||||
dagu start hello
|
||||
```
|
||||
@ -88,7 +88,7 @@ dagu status hello
|
||||
|
||||
```bash [Docker]
|
||||
docker run --rm \
|
||||
-v ~/.dagu:/dagu \
|
||||
-v ~/.dagu:/var/lib/dagu \
|
||||
ghcr.io/dagu-org/dagu:latest \
|
||||
dagu status hello
|
||||
```
|
||||
@ -106,7 +106,7 @@ dagu start-all
|
||||
```bash [Docker]
|
||||
docker run -d \
|
||||
-p 8080:8080 \
|
||||
-v ~/.dagu:/dagu \
|
||||
-v ~/.dagu:/var/lib/dagu \
|
||||
ghcr.io/dagu-org/dagu:latest \
|
||||
dagu start-all
|
||||
```
|
||||
|
||||
@ -83,7 +83,7 @@ dagu start hello
|
||||
|
||||
```bash [Docker]
|
||||
docker run --rm \
|
||||
-v ~/.dagu:/dagu \
|
||||
-v ~/.dagu:/var/lib/dagu \
|
||||
ghcr.io/dagu-org/dagu:latest \
|
||||
dagu start hello
|
||||
```
|
||||
@ -113,7 +113,7 @@ dagu status hello
|
||||
|
||||
```bash [Docker]
|
||||
docker run --rm \
|
||||
-v ~/.dagu:/dagu \
|
||||
-v ~/.dagu:/var/lib/dagu \
|
||||
ghcr.io/dagu-org/dagu:latest \
|
||||
dagu status hello
|
||||
```
|
||||
@ -131,7 +131,7 @@ dagu start-all
|
||||
```bash [Docker]
|
||||
docker run -d \
|
||||
-p 8080:8080 \
|
||||
-v ~/.dagu:/dagu \
|
||||
-v ~/.dagu:/var/lib/dagu \
|
||||
ghcr.io/dagu-org/dagu:latest \
|
||||
dagu start-all
|
||||
```
|
||||
|
||||
@ -20,15 +20,15 @@ if [ "$CURRENT_UID" != "$PUID" ] || [ "$CURRENT_GID" != "$PGID" ]; then
|
||||
usermod -o -u "$PUID" dagu
|
||||
fi
|
||||
|
||||
mkdir -p /dagu
|
||||
mkdir -p ${DAGU_HOME:-/var/lib/dagu}
|
||||
|
||||
# If DAGU_HOME is not set, try to guess if the legacy /home directory is being
|
||||
# used. If so set the HOME to /home/dagu. Otherwise force the /dagu directory
|
||||
# used. If so set the HOME to /home/dagu. Otherwise force the /var/lib/dagu directory
|
||||
# as DAGU_HOME
|
||||
if [ -z "$DAGU_HOME" ]; then
|
||||
# For ease of use set DAGU_HOME to /dagu so all data is located in a
|
||||
# single directory
|
||||
export DAGU_HOME=/dagu
|
||||
# For ease of use set DAGU_HOME to /var/lib/dagu so all data is located in a
|
||||
# single directory following FHS conventions
|
||||
export DAGU_HOME=/var/lib/dagu
|
||||
fi
|
||||
|
||||
# Run all scripts in /etc/custom-init.d. It assumes that all scripts are
|
||||
|
||||
@ -152,9 +152,23 @@ func (srv *Server) setupRoutes(ctx context.Context, r *chi.Mux) {
|
||||
}
|
||||
|
||||
// Serve assets with proper cache control
|
||||
r.Get("/assets/*", func(w http.ResponseWriter, r *http.Request) {
|
||||
assetsPath := path.Join(srv.config.Server.BasePath, "assets/*")
|
||||
if !strings.HasPrefix(assetsPath, "/") {
|
||||
assetsPath = "/" + assetsPath
|
||||
}
|
||||
|
||||
// Create a file server for the embedded assets
|
||||
fileServer := http.FileServer(http.FS(assetsFS))
|
||||
|
||||
// If there's a base path, we need to strip it from the request URL
|
||||
if srv.config.Server.BasePath != "" && srv.config.Server.BasePath != "/" {
|
||||
stripPrefix := strings.TrimSuffix(srv.config.Server.BasePath, "/")
|
||||
fileServer = http.StripPrefix(stripPrefix, fileServer)
|
||||
}
|
||||
|
||||
r.Get(assetsPath, func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Cache-Control", "max-age=86400")
|
||||
http.FileServer(http.FS(assetsFS)).ServeHTTP(w, r)
|
||||
fileServer.ServeHTTP(w, r)
|
||||
})
|
||||
|
||||
// Serve UI pages
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" href="/assets/favicon.ico" />
|
||||
<link rel="icon" href="{{ basePath }}/assets/favicon.ico" />
|
||||
<title>{{ navbarTitle }}</title>
|
||||
<script>
|
||||
function getConfig() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user