mirror of
https://github.com/jupyter/docker-stacks.git
synced 2025-10-15 22:12:57 +00:00
Recipe using bake to build with custom arguments (#2141)
* Example using bake to build with custom arguments * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Add missing language markers * Unify markdown style in recipes.md * Update docs/using/recipe_code/docker-bake.python312.hcl --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com>
This commit is contained in:
45
docs/using/recipe_code/docker-bake.python312.hcl
Normal file
45
docs/using/recipe_code/docker-bake.python312.hcl
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
group "default" {
|
||||||
|
targets = ["custom-notebook"]
|
||||||
|
}
|
||||||
|
|
||||||
|
target "foundation" {
|
||||||
|
context = "https://github.com/jupyter/docker-stacks.git#main:images/docker-stacks-foundation"
|
||||||
|
args = {
|
||||||
|
PYTHON_VERSION = "3.12"
|
||||||
|
}
|
||||||
|
tags = ["docker-stacks-foundation"]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
target "base-notebook" {
|
||||||
|
context = "https://github.com/jupyter/docker-stacks.git#main:images/base-notebook"
|
||||||
|
contexts = {
|
||||||
|
docker-stacks-foundation = "target:foundation"
|
||||||
|
}
|
||||||
|
args = {
|
||||||
|
BASE_CONTAINER = "docker-stacks-foundation"
|
||||||
|
}
|
||||||
|
tags = ["base-notebook"]
|
||||||
|
}
|
||||||
|
|
||||||
|
target "minimal-notebook" {
|
||||||
|
context = "https://github.com/jupyter/docker-stacks.git#main:images/minimal-notebook"
|
||||||
|
contexts = {
|
||||||
|
base-notebook = "target:base-notebook"
|
||||||
|
}
|
||||||
|
args = {
|
||||||
|
BASE_CONTAINER = "base-notebook"
|
||||||
|
}
|
||||||
|
tags = ["minimal-notebook"]
|
||||||
|
}
|
||||||
|
|
||||||
|
target "custom-notebook" {
|
||||||
|
context = "."
|
||||||
|
contexts = {
|
||||||
|
minimal-notebook = "target:minimal-notebook"
|
||||||
|
}
|
||||||
|
args = {
|
||||||
|
BASE_CONTAINER = "minimal-notebook"
|
||||||
|
}
|
||||||
|
tags = ["custom-jupyter"]
|
||||||
|
}
|
@@ -525,3 +525,57 @@ they may be explained in the "Installation instructions" section of the Download
|
|||||||
```{literalinclude} recipe_code/oracledb.dockerfile
|
```{literalinclude} recipe_code/oracledb.dockerfile
|
||||||
:language: docker
|
:language: docker
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Building stack images with custom arguments
|
||||||
|
|
||||||
|
A selection of prebuilt images are available from Quay.io,
|
||||||
|
however, it's impossible to cater to everybody's needs.
|
||||||
|
For extensive customization with an automated build pipeline,
|
||||||
|
you may wish to create a [community-maintained stack](https://jupyter-docker-stacks.readthedocs.io/en/latest/contributing/stacks.html),
|
||||||
|
however, for minor customizations, this may be overkill.
|
||||||
|
For example, you may wish to use the same jupyter stacks but built on a different base image,
|
||||||
|
or build with a different Python version.
|
||||||
|
|
||||||
|
To achieve this you can use [Docker Bake](https://docs.docker.com/build/bake/)
|
||||||
|
to build the stacks locally with custom arguments.
|
||||||
|
|
||||||
|
```{note}
|
||||||
|
Custom arguments may result in build errors due to incompatibility.
|
||||||
|
If so your use-case may require a fully customized stack.
|
||||||
|
```
|
||||||
|
|
||||||
|
As a basic example, if you want to build a custom image based on the `minimal-notebook` image using `Python 3.12`,
|
||||||
|
then with a Dockerfile like:
|
||||||
|
|
||||||
|
```{code-block} Dockerfile
|
||||||
|
:caption: Dockerfile
|
||||||
|
|
||||||
|
ARG BASE_CONTAINER=minimal-notebook
|
||||||
|
FROM $BASE_CONTAINER
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Include the below file in your project:
|
||||||
|
|
||||||
|
```{literalinclude} recipe_code/docker-bake.python312.hcl
|
||||||
|
:force:
|
||||||
|
:language: hcl
|
||||||
|
:caption: docker-bake.hcl
|
||||||
|
```
|
||||||
|
|
||||||
|
To build this stack, in the same directory run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker buildx bake
|
||||||
|
```
|
||||||
|
|
||||||
|
Docker Bake then determines the correct build order from the `contexts` parameters
|
||||||
|
and builds the stack as requested.
|
||||||
|
|
||||||
|
This image can then be run using:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run custom-jupyter
|
||||||
|
```
|
||||||
|
|
||||||
|
or referenced in a docker compose file.
|
||||||
|
Reference in New Issue
Block a user