commit
881f2ee8ee
@ -7,21 +7,21 @@ displayed_sidebar: europa
|
|||||||
|
|
||||||
You can use Dagger to build container images. Here's a simple example of a [Dockerfile](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/) build:
|
You can use Dagger to build container images. Here's a simple example of a [Dockerfile](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/) build:
|
||||||
|
|
||||||
```cue file=../tests/core-concepts/container-images/plans/with-dockerfile.cue
|
```cue file=../tests/core-concepts/container-images/simple/with-dockerfile.cue
|
||||||
```
|
```
|
||||||
|
|
||||||
## Building with CUE
|
## Building with CUE
|
||||||
|
|
||||||
`Dockerfile` files are easy to start, but you can also build images entirely in CUE. The following example produces the same image as above:
|
`Dockerfile` files are easy to start, but you can also build images entirely in CUE. The following example produces the same image as above:
|
||||||
|
|
||||||
```cue file=../tests/core-concepts/container-images/plans/build.cue
|
```cue file=../tests/core-concepts/container-images/simple/build.cue
|
||||||
```
|
```
|
||||||
|
|
||||||
## Automation
|
## Automation
|
||||||
|
|
||||||
Building images in CUE gives you greater flexibility. For example, you can automate building multiple versions of an image, and deploy, all in Dagger:
|
Building images in CUE gives you greater flexibility. For example, you can automate building multiple versions of an image, and deploy, all in Dagger:
|
||||||
|
|
||||||
```cue file=../tests/core-concepts/container-images/plans/template.cue
|
```cue file=../tests/core-concepts/container-images/template/dagger.cue
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you can deploy all versions:
|
Now you can deploy all versions:
|
||||||
@ -40,5 +40,5 @@ dagger do versions 8.0 build
|
|||||||
|
|
||||||
Another common pattern is [multi-stage builds](https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds). This allows you to have heavier build images during the build process, and copy the built artifacts into a cleaner and lighter image to run in production.
|
Another common pattern is [multi-stage builds](https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds). This allows you to have heavier build images during the build process, and copy the built artifacts into a cleaner and lighter image to run in production.
|
||||||
|
|
||||||
```cue file=../tests/core-concepts/container-images/plans/multi-stage.cue
|
```cue file=../tests/core-concepts/container-images/multi-stage/dagger.cue
|
||||||
```
|
```
|
||||||
|
@ -8,12 +8,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
dagger.#Plan & {
|
dagger.#Plan & {
|
||||||
client: filesystem: src: read: contents: dagger.#FS
|
client: filesystem: "./src": read: contents: dagger.#FS
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
// Build app in a "golang" container image.
|
// Build app in a "golang" container image.
|
||||||
build: go.#Build & {
|
build: go.#Build & {
|
||||||
source: client.filesystem.src.read.contents
|
source: client.filesystem."./src".read.contents
|
||||||
}
|
}
|
||||||
|
|
||||||
base: alpine.#Build & {
|
base: alpine.#Build & {
|
@ -6,7 +6,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
dagger.#Plan & {
|
dagger.#Plan & {
|
||||||
client: filesystem: ".": read: contents: dagger.#FS
|
client: filesystem: "./src": read: contents: dagger.#FS
|
||||||
|
|
||||||
actions: build: docker.#Build & {
|
actions: build: docker.#Build & {
|
||||||
steps: [
|
steps: [
|
||||||
@ -14,7 +14,7 @@ dagger.#Plan & {
|
|||||||
source: "python:3.9"
|
source: "python:3.9"
|
||||||
},
|
},
|
||||||
docker.#Copy & {
|
docker.#Copy & {
|
||||||
contents: client.filesystem.".".read.contents
|
contents: client.filesystem."./src".read.contents
|
||||||
dest: "/app"
|
dest: "/app"
|
||||||
},
|
},
|
||||||
docker.#Run & {
|
docker.#Run & {
|
@ -0,0 +1 @@
|
|||||||
|
print("Hello world!")
|
@ -5,15 +5,15 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
dagger.#Plan & {
|
dagger.#Plan & {
|
||||||
client: filesystem: ".": read: contents: dagger.#FS
|
client: filesystem: "./src": read: contents: dagger.#FS
|
||||||
|
|
||||||
actions: build: dagger.#Dockerfile & {
|
actions: build: dagger.#Dockerfile & {
|
||||||
// This is the context.
|
// This is the context.
|
||||||
source: client.filesystem.".".read.contents
|
source: client.filesystem."./src".read.contents
|
||||||
|
|
||||||
// Default is to look for a Dockerfile in the context,
|
// Default is to look for a Dockerfile in the context,
|
||||||
// but let's declare it here.
|
// but let's declare it here.
|
||||||
contents: #"""
|
dockerfile: contents: #"""
|
||||||
FROM python:3.9
|
FROM python:3.9
|
||||||
COPY . /app
|
COPY . /app
|
||||||
RUN pip install -r /app/requirements.txt
|
RUN pip install -r /app/requirements.txt
|
Reference in New Issue
Block a user