fix: Dockerfile → COPY pre-built binary (no network needed)
CI / test (push) Successful in 2m45s

Docker Desktop Windows blocks build network access. Instead of
building V from source inside Docker, cross-compile Linux binary
on host and COPY into minimal alpine image.
This commit is contained in:
2026-08-03 20:26:02 -04:00
parent 35a79f1d5b
commit 1c847a824d
2 changed files with 15 additions and 25 deletions
+5 -11
View File
@@ -1,17 +1,11 @@
# ── Build: use official V container to compile ────────────────────────────
FROM thevlang/vlang:alpine AS builder
# Copy project source and build
WORKDIR /src
COPY . .
RUN git clone https://github.com/vlang/yaml.git /root/.vmodules/yaml
RUN v -prod -o /ntfy-bridge .
# ── Runtime: minimal image ────────────────────────────────────────────────
# ── Minimal Docker image for ntfy-bridge ──────────────────────────────────
# Binary is built on the host: v -os linux -o ntfy-bridge .
FROM alpine:3.20
RUN apk add --no-cache ca-certificates tzdata curl
COPY --from=builder /ntfy-bridge /usr/local/bin/ntfy-bridge
COPY ntfy-bridge /usr/local/bin/ntfy-bridge
RUN chmod +x /usr/local/bin/ntfy-bridge
WORKDIR /etc/ntfy-bridge
EXPOSE 9090
+10 -14
View File
@@ -50,24 +50,20 @@ state:
println(' Wrote: ${target_dir}/dashboard.html')
}
// Copy Dockerfile and sources for build
// Copy Dockerfile and build Linux binary
if os.exists('Dockerfile') {
os.cp('Dockerfile', '${target_dir}/Dockerfile') or {}
println(' Wrote: ${target_dir}/Dockerfile')
}
// Copy V source files
src_files := ['main.v', 'server.v', 'config.v', 'log.v', 'ntfy.v', 'dedup.v',
'docker_watcher.v', 'service.v', 'filter_outgoing.v', 'metrics.v',
'docker_install.v', 'v.mod', 'dashboard.html', 'ntfy-bridge.example.yaml',
'sources/event.v', 'sources/gitea.v', 'sources/uptime_kuma.v',
'sources/docker.v', 'sources/generic.v', 'sources/cron.v',
'sources/http_poll.v']
for file in src_files {
if os.exists(file) {
target := '${target_dir}/${file}'
os.mkdir_all(os.dir(target)) or {}
os.cp(file, target) or {}
}
// Cross-compile Linux binary
println(' Building Linux binary (v -os linux)...')
build_result := os.execute('v -os linux -o ${target_dir}/ntfy-bridge .')
if build_result.exit_code != 0 {
println(' Warning: Could not cross-compile Linux binary.')
println(' ${build_result.output}')
println(' You will need a Linux binary named "ntfy-bridge" in ${target_dir}/')
} else {
println(' Built: ${target_dir}/ntfy-bridge')
}
// docker-compose.yml