diff --git a/docs/reference/universe/docker/README.md b/docs/reference/universe/docker/README.md index 09dc0966..4473c994 100644 --- a/docs/reference/universe/docker/README.md +++ b/docs/reference/universe/docker/README.md @@ -74,13 +74,12 @@ Push a docker image to a remote registry ### docker.#Push Inputs -| Name | Type | Description | -| ------------- |:-------------: |:-------------: | -|*name* | `string` |Remote name (example: "index.docker.io/alpine:latest") | -|*source* | `dagger.#Artifact` |Image source | -|*registry.target* | `*"https://index.docker.io/v1/" \| string` |Remote registry | -|*registry.username* | `string` |Username | -|*registry.secret* | `(string\|bytes)` |Password or secret | +| Name | Type | Description | +| ------------- |:-------------: |:-------------: | +|*name* | `string` |Remote name (example: "index.docker.io/alpine:latest") | +|*source* | `dagger.#Artifact` |Image source | +|*auth.username* | `string` |Username | +|*auth.secret* | `string` |Password or secret | ### docker.#Push Outputs diff --git a/solver/registryauth.go b/solver/registryauth.go index af17d38e..2c47d49c 100644 --- a/solver/registryauth.go +++ b/solver/registryauth.go @@ -63,7 +63,9 @@ func (a *RegistryAuthProvider) Credentials(ctx context.Context, req *bkauth.Cred } func parseAuthHost(host string) (*url.URL, error) { - if host == "registry-1.docker.io" { + isDockerHub := !(strings.Contains(host, "amazonaws.com") || strings.Contains(host, "gcr.io") || strings.Contains(host, "microsoft.com")) + + if host == "registry-1.docker.io" || isDockerHub { host = "https://index.docker.io/v1/" } diff --git a/stdlib/.dagger/env/docker-pull/values.yaml b/stdlib/.dagger/env/docker-pull/values.yaml index bd89b103..9637ece1 100644 --- a/stdlib/.dagger/env/docker-pull/values.yaml +++ b/stdlib/.dagger/env/docker-pull/values.yaml @@ -1,7 +1,9 @@ +plan: + module: .dagger/env/docker-pull/plan name: docker-pull inputs: ref: - text: docker.io/daggerio/ci-test:qhkmeqmhmnqn@sha256:96640793ed325f893608508f1b60b9c19b547c178e45639a249989545894eed4 + text: docker.io/daggerio/ci-test:otnlnwqyyxlk@sha256:35fc94d52b4fa53c2caa38ff11e13182e6f88c651eb0846728d1007d931f0d3c sops: kms: [] gcp_kms: [] @@ -17,8 +19,8 @@ sops: SG1raUVNTzZIWDltV1pOS3hySHlJeWcKg3blmstOGcxtPww513+mAEA0MWOXwNAT 5ngRvG6MraW3g9dhIuUYOwjuJyz1Z07/DBEocSxnjSyw45ZCkM1/9Q== -----END AGE ENCRYPTED FILE----- - lastmodified: "2021-06-12T15:01:07Z" - mac: ENC[AES256_GCM,data:kmryJiX4cnZTeyRcH+TljCj+m5kEA4yPu0gQkqS3apEolfNFWzkdlvRS2P+9EYO19iT1FxpNRwrs+G9qGeISubc48u2++Yb/mAUU4ilIu8flIPs3s63Ep8FeRv+hI3Govljjbjyds+3mR+o0Iv+KhpKBPDboXyRpWGlIijpBzLQ=,iv:ROAK7qmGn0jWDZp8uPLVbReqdgO9qw8EESkYdPjxLDk=,tag:8CrydkWN9xtJX8yItgjz+A==,type:str] + lastmodified: "2021-06-18T19:57:47Z" + mac: ENC[AES256_GCM,data:dS7zAl28vERwDOh8OwNmVNrcZ10Ypibl7HylXnJ0+CBGCx3b0C6+/TNgytZFjhhjhOyJbioaTIA/Rra3Okz2Y1beJcP90CfixkIOQvpespIN6yh92SN6m1MbGQzWB0lURnVwHhLlOyIsDK5PaLcbW9mVhwiH4Y2otH+xRNO+8Ls=,iv:1vRlh02EFWYqu2q/AQeHDRcIJIiKxZAp7lspQmPybRI=,tag:0DcXYSoLMAJ/09ZunKkezg==,type:str] pgp: [] encrypted_suffix: secret version: 3.7.1 diff --git a/stdlib/.dagger/env/docker-push/plan/push.cue b/stdlib/.dagger/env/docker-push/plan/push.cue index 60ba10e7..529466ca 100644 --- a/stdlib/.dagger/env/docker-push/plan/push.cue +++ b/stdlib/.dagger/env/docker-push/plan/push.cue @@ -55,7 +55,7 @@ TestPush: { push: docker.#Push & { "name": name source: image - registry: { + auth: { username: TestRegistry.username "secret": secret.out } diff --git a/stdlib/.dagger/env/docker-push/values.yaml b/stdlib/.dagger/env/docker-push/values.yaml index 35280cde..57fea252 100644 --- a/stdlib/.dagger/env/docker-push/values.yaml +++ b/stdlib/.dagger/env/docker-push/values.yaml @@ -1,3 +1,5 @@ +plan: + module: .dagger/env/docker-push/plan name: docker-push inputs: TestRegistry.secret: @@ -19,8 +21,8 @@ sops: UjFJYTc1UUUzSFVkZjQ2blRsSGpVdVEKOanMR3+WlAgoDfqTUW7WPW1ytT3NdkTX 4Rqo49QmnuKFJ9tKoBFQOqgIo8E/lpcOkeIUiy5e/35FvsZ/KFk/pg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2021-06-12T13:31:57Z" - mac: ENC[AES256_GCM,data:TrLGfqDj3lvZKroaPtlDuR0Ki+yoFDYFqIhW+g7iasVOzvDaqHepX8X/aLiHX+XHdTqGH6ehfu1k1BSaz6xKqqdIai9NIyokgIKXR1F5mRgK/aDhc6x/YvX3dSl79/4zBBblDpYNFhCarQMxeTSFP9GfW+e0+T/z10fHHlQub8o=,iv:Pab2qkZTqP/6j4LV0B97SACQm/UZPMkeahGjZLJ2fFg=,tag:r4IW1WRipuC/MdtwEzzEpA==,type:str] + lastmodified: "2021-06-18T19:34:53Z" + mac: ENC[AES256_GCM,data:2LqpZGLCgN4d72hZMSs9uuIy0Eh69eP9JfhCcCvnIUg8kXcr5/mThST3Xum1LHJsAwfXIxPQPuz2ZzlcWksgYczNalU+ibTVk6N3nLi4ynrbV5QXaoS2MUmJHx6Y4VsjKHg13DQOysqcCa3+vY3WKxZ/WLgkI0rVOwZMELQBfXo=,iv:LeVFP37Y0rpLJa3IpbHD0N1ZARH139dz434c+uLv+Yo=,tag:yjlfzzcvvFzmVnvBX+8aAg==,type:str] pgp: [] encrypted_suffix: secret version: 3.7.1 diff --git a/stdlib/docker/docker.cue b/stdlib/docker/docker.cue index 0660d74d..07782226 100644 --- a/stdlib/docker/docker.cue +++ b/stdlib/docker/docker.cue @@ -37,31 +37,29 @@ import ( // Image source source: dagger.#Artifact @dagger(input) - // Image registry - registry: { - // Remote registry - target: string | *"https://index.docker.io/v1/" @dagger(input) - + // Registry auth + auth: { // Username username: string @dagger(input) // Password or secret - secret: string | bytes @dagger(input) + secret: string @dagger(input) } push: #up: [ op.#Load & {from: source}, - if registry != _|_ { + if auth != _|_ { op.#DockerLogin & { - target: registry.target - username: registry.username - secret: registry.secret + target: name + username: auth.username + secret: auth.secret } }, op.#PushContainer & {ref: name}, - op.#Subdir & {dir: "/dagger"}, + + op.#Subdir & {dir: "/dagger"}, ] // Image ref