Xcaddy build error <failed to solve: failed to compute cache key: failed to calculate checksum of ref ... "/user/bin/caddy": not found>

1. The problem I’m having:

I cannot build a custom caddy with xcaddy.

2. Error messages and/or full log output:

# docker compose up -d
Compose now can delegate build to bake for better performances
Just set COMPOSE_BAKE=true
[+] Building 52.4s (8/8) FINISHED                                                                                                                docker:default
 => [caddy internal] load build definition from Dockerfile                                                                                                 0.0s
 => => transferring dockerfile: 1.01kB                                                                                                                     0.0s
 => [caddy internal] load metadata for docker.io/library/caddy:2.9.1                                                                                       0.7s
 => [caddy internal] load metadata for docker.io/library/caddy:2.9.1-builder                                                                               0.7s
 => [caddy internal] load .dockerignore                                                                                                                    0.1s
 => => transferring context: 2B                                                                                                                            0.0s
 => CACHED [caddy stage-1 1/2] FROM docker.io/library/caddy:2.9.1@sha256:cd261fc62394f1ff0b44f16eb1d202b4e71d5365c9ec866a4f1a9c5a52da9352                  0.0s
 => CACHED [caddy builder 1/2] FROM docker.io/library/caddy:2.9.1-builder@sha256:c1e258b449a2deaab94f90330450fcfe8c3e0b6f0891f28a704c749f43825877          0.0s
 => [caddy builder 2/2] RUN xcaddy build  --with github.com/caddy-dns/duckdns                                                                             46.3s
 => ERROR [caddy stage-1 2/2] COPY --from=builder /user/bin/caddy /usr/bin/caddy                                                                           0.0s 
------                                                                                                                                                          
 > [caddy stage-1 2/2] COPY --from=builder /user/bin/caddy /usr/bin/caddy:                                                                                      
------                                                                                                                                                          
failed to solve: failed to compute cache key: failed to calculate checksum of ref be9d2008-aa60-4de0-beb1-72bdae774d2a::er8qpikaet44blgv7ng1yo0gi: "/user/bin/caddy": not found   

3. Caddy version:

caddy:2.9.1-builder

4. How I installed and ran Caddy:

a. System environment:

# cat /etc/debian_version
12.10
# docker --version
Docker version 28.0.1, build 068a01e

b. Command:

# docker compose up -d

c. Service/unit/compose file:

---
# caddy/compose.yaml

services:
  caddy:
    build:
      context: .
    container_name: caddy
    pull_policy: build
    restart: unless-stopped
    user: "3012:3012"
    cap_add:
      - NET_ADMIN
    env_file:
      - ./secrets.env
    ports:
      - "5580:80"
      - "5443:443"
      - "5443:443/udp"
    volumes:
      - ./caddy:/etc/caddy
      - ./config:/config:rw
      - ./data:/data:rw
      - ./srv:/srv
      - /mnt/logs/caddy/:/logs

d. My complete Caddy config:

Not running yet but I plan to use the following:

{
	# 	auto_https disable_redirects
	grace_period 10s

	email [REDACT]@gmail.com

	acme_dns duckdns {
		api_token {env.DUCKDNS_API_TOKEN}
		override_domain *.[REDACT]
	}
	acme_ca https://acme-v02.api.letsencrypt.org/directory
	# 	acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
}

[REDACT].duckdns.org [REDACT].duckdns.org {
	tls {
		dns duckdns {env.DUCKDNS_API_TOKEN}
	}
	reverse_proxy http://10.27.0.50:8123
	log {
		output file /logs/ha.json {
			roll_size 10MB
			roll_keep 10
			roll_keep_for 168h
		}
		format json
	}
}

[REDACT].duckdns.org [REDACT].duckdns.org {
	tls {
		dns duckdns {env.DUCKDNS_API_TOKEN}
	}
	reverse_proxy http://10.27.0.65:8123
	log {
		output file /logs/ha2.json {
			roll_size 10MB
			roll_keep 10
			roll_keep_for 168h
		}
		format json
	}
}

[REDACT].duckdns.org [REDACT].duckdns.org {
	tls {
		dns duckdns {env.DUCKDNS_API_TOKEN}
	}
	reverse_proxy http://10.27.0.65:1780
	log {
		output file /logs/nc.json {
			roll_size 10MB
			roll_keep 10
			roll_keep_for 168h
		}
		format json
	}
}

[REDACT].duckdns.org {
	tls {
		dns duckdns {env.DUCKDNS_API_TOKEN}
	}
	reverse_proxy http://10.27.0.50:32400
	log {
		output file /logs/plex.json {
			roll_size 10MB
			roll_keep 10
			roll_keep_for 168h
		}
		format json
	}
}

[REDACT].duckdns.org {
	tls {
		dns duckdns {env.DUCKDNS_API_TOKEN}
	}
	reverse_proxy http://10.27.0.50:6080
	log {
		output file /logs/v2ray.json {
			roll_size 10MB
			roll_keep 10
			roll_keep_for 168h
		}
		format json
	}
}

5. Links to relevant resources:

Dockerfile:

FROM caddy:2.9.1-builder AS builder

RUN xcaddy build \
	--with github.com/caddy-dns/duckdns

FROM caddy:2.9.1

COPY --from=builder /user/bin/caddy /usr/bin/caddy

I don’t have xcaddy anymore so I can’t verify, but try this:

FROM caddy:2.9.1-builder AS builder
RUN xcaddy build --output /usr/bin/caddy --with github.com/caddy-dns/duckdns

FROM caddy:2.9.1
COPY --from=builder /usr/bin/caddy /usr/bin/caddy

Thanks for your help.

Unfortunately, it does not fix the error. :persevering_face:

One thing I did just notice is you’re using COPY --from=builder /user/bin/caddy /usr/bin/caddy. Do you mean to have the first directory start with user, or should it be usr?

1 Like

Thanks a ton! You are an eagle-eye life saver!

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.