Merge pull request #971 from VazeeKevin/tasks/improve-stdlib-docker

stdlib/docker: update #Build to incorporate image from Dockerfile
This commit is contained in:
Sam Alba 2021-09-16 17:50:28 -07:00 committed by GitHub
commit 12e457e9e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 53 additions and 49 deletions

View File

@ -12,13 +12,14 @@ import "alpha.dagger.io/docker"
## docker.#Build ## docker.#Build
Build a Docker image from source, using included Dockerfile Build a Docker image from source
### docker.#Build Inputs ### docker.#Build Inputs
| Name | Type | Description | | Name | Type | Description |
| ------------- |:-------------: |:-------------: | | ------------- |:-------------: |:-------------: |
|*source* | `dagger.#Artifact` |- | |*source* | `dagger.#Artifact` |Build context |
|*dockerfile* | `*null \| string` |Dockerfile passed as a string |
### docker.#Build Outputs ### docker.#Build Outputs
@ -39,21 +40,6 @@ A container image that can run any docker command
_No output._ _No output._
## docker.#ImageFromDockerfile
Build a Docker image from the provided Dockerfile contents
### docker.#ImageFromDockerfile Inputs
| Name | Type | Description |
| ------------- |:-------------: |:-------------: |
|*dockerfile* | `string` |Dockerfile passed as a string |
|*context* | `dagger.#Artifact` |Build context |
### docker.#ImageFromDockerfile Outputs
_No output._
## docker.#Pull ## docker.#Pull
Pull a docker container Pull a docker container

View File

@ -6,15 +6,22 @@ import (
"alpha.dagger.io/dagger/op" "alpha.dagger.io/dagger/op"
) )
// Build a Docker image from source, using included Dockerfile // Build a Docker image from source
#Build: { #Build: {
// Build context
source: dagger.#Input & {dagger.#Artifact} source: dagger.#Input & {dagger.#Artifact}
// Dockerfile passed as a string
dockerfile: dagger.#Input & {*null | string}
args?: [string]: string args?: [string]: string
#up: [ #up: [
op.#DockerBuild & { op.#DockerBuild & {
context: source context: source
if dockerfile != null {
"dockerfile": dockerfile
}
if args != _|_ { if args != _|_ {
buildArg: args buildArg: args
} }
@ -150,20 +157,3 @@ import (
} }
} }
} }
// Build a Docker image from the provided Dockerfile contents
// FIXME: incorporate into #Build
#ImageFromDockerfile: {
// Dockerfile passed as a string
dockerfile: dagger.#Input & {string}
// Build context
context: dagger.#Input & {dagger.#Artifact}
#up: [
op.#DockerBuild & {
"context": context
"dockerfile": dockerfile
},
]
}

View File

@ -28,15 +28,43 @@ TestBuild: {
] ]
} }
TestSourceImageFromDockerfile: dagger.#Artifact @dagger(input) TestBuildWithArgs: {
image: #Build & {
TestImageFromDockerfile: {
image: #ImageFromDockerfile & {
dockerfile: """ dockerfile: """
FROM alpine FROM alpine
COPY test.txt /test.txt ARG TEST
ENV TEST=$TEST
RUN echo "$TEST" > /test.txt
""" """
context: TestSourceImageFromDockerfile source: ""
args: TEST: "test"
}
verify: #up: [
op.#Load & {
from: image
},
op.#Exec & {
always: true
args: [
"sh", "-c", """
grep -q "test" /test.txt
""",
]
},
]
}
TestSourceImageFromDockerfile: dagger.#Artifact @dagger(input)
TestImageFromDockerfile: {
image: #Build & {
dockerfile: """
FROM alpine
COPY test.txt /test.txt
"""
source: TestSourceImageFromDockerfile
} }
verify: #up: [ verify: #up: [

View File

@ -17,12 +17,12 @@ TestPush: {
target: "daggerio/ci-test:\(tag.out)" target: "daggerio/ci-test:\(tag.out)"
image: #ImageFromDockerfile & { image: #Build & {
dockerfile: """ dockerfile: """
FROM alpine FROM alpine
RUN echo "test" > /test.txt RUN echo "test" > /test.txt
""" """
context: "" source: ""
} }
push: #Push & { push: #Push & {

View File

@ -18,12 +18,12 @@ TestResources: {
// Seed is used to force buildkit execution and not simply use a previous generated string. // Seed is used to force buildkit execution and not simply use a previous generated string.
suffix: random.#String & {seed: "docker multi registry"} suffix: random.#String & {seed: "docker multi registry"}
image: #ImageFromDockerfile & { image: #Build & {
dockerfile: """ dockerfile: """
FROM alpine FROM alpine
RUN echo "test" > /test.txt RUN echo "test" > /test.txt
""" """
context: "" source: ""
} }
} }

View File

@ -17,12 +17,12 @@ TestPush: {
target: "daggerio/ci-test:\(tag.out)" target: "daggerio/ci-test:\(tag.out)"
image: #ImageFromDockerfile & { image: #Build & {
dockerfile: """ dockerfile: """
FROM alpine FROM alpine
RUN echo "test" > /test.txt RUN echo "test" > /test.txt
""" """
context: "" source: ""
} }
push: #Push & { push: #Push & {