Initial commit
commit
6ff519aecd
|
@ -0,0 +1 @@
|
||||||
|
/_build/
|
|
@ -0,0 +1,42 @@
|
||||||
|
# Minimal Base Python Container Image
|
||||||
|
|
||||||
|
The *pythonctnr* image contains ONLY the Python runtime, and nothing else. It
|
||||||
|
is suitable for deploying applications written in pure Python, without any
|
||||||
|
external library dependencies. No shell or other OS utilities are included.
|
||||||
|
Just `/usr/bin/python3` and the libraries it needs to run.
|
||||||
|
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
The contents of the container image are built with [buildroot][0].
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make -C ~/src/buildroot O=${PWD}/_build pythonctnr_defconfig
|
||||||
|
make -C _build
|
||||||
|
```
|
||||||
|
|
||||||
|
This will produce a `rootfs.tar` tarball in `_build/images`, which is then
|
||||||
|
converted to a container image using `buildah`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ctnr=$(buildah from scratch)
|
||||||
|
buildah add ${ctnr} _build/images/rootfs.tar /
|
||||||
|
buildah commit ${ctnr} pythonctnr:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
[0]: https://buildroot.org/
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The container image can be used like any other image, e.g. in a `Dockerfile`.
|
||||||
|
*pip* is included, to allow installing Python distribution packages.
|
||||||
|
|
||||||
|
```Dockerfile
|
||||||
|
FROM pythonctnr
|
||||||
|
|
||||||
|
RUN ["/usr/bin/python3", "-m", "pip", "install", "mypkg"]
|
||||||
|
```
|
||||||
|
|
||||||
|
**NOTE**: Because there is no shell, the default string form of the `RUN`
|
||||||
|
instruction does not work. You must use the *exec* form.
|
|
@ -0,0 +1,14 @@
|
||||||
|
BR2_x86_64=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
|
||||||
|
BR2_TARGET_GENERIC_HOSTNAME="pythonctnr"
|
||||||
|
BR2_TARGET_GENERIC_ISSUE=""
|
||||||
|
BR2_INIT_NONE=y
|
||||||
|
BR2_ROOTFS_MERGED_USR=y
|
||||||
|
# BR2_TARGET_ENABLE_ROOT_LOGIN is not set
|
||||||
|
BR2_SYSTEM_BIN_SH_NONE=y
|
||||||
|
# BR2_TARGET_GENERIC_GETTY is not set
|
||||||
|
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
|
||||||
|
BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin"
|
||||||
|
# BR2_PACKAGE_BUSYBOX is not set
|
||||||
|
BR2_PACKAGE_PYTHON3=y
|
||||||
|
BR2_PACKAGE_PYTHON_PIP=y
|
|
@ -0,0 +1,2 @@
|
||||||
|
name: pythonctnr
|
||||||
|
desc: Python container image
|
Loading…
Reference in New Issue