fix: asset serving with base path and Docker storage location (#1037)

This commit is contained in:
YotaHamada 2025-06-20 01:06:23 +09:00 committed by GitHub
parent 4ee3c50988
commit 4f70aa1291
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 54 additions and 37 deletions

View File

@ -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}

View File

@ -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}

View File

@ -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}

View File

@ -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
```

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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
```

View File

@ -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
```

View File

@ -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

View File

@ -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

View File

@ -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() {