buildahscript
Buildahscript is a new container definition language built to be imperative and flexible.
It allows you to do more with buildargs, create actually re-usable modules, and in general create more flexible container builders.
Example
#!/usr/bin/env buildahscript-py
#| pip: requests
#| arg: eula: bool
#| arg: version: str = "latest"
#| arg: type: str = "vanilla"
import tarfile
import requests
with TemporaryDirectory() as td:
bin = td / 'bin'
bin.mkdir()
with Container('rust:buster') as build:
build.copy_in('cmd', '/tmp/cmd')
build.copy_in('localmc', '/tmp/localmc')
build.run(['cargo', 'build', '--release'], pwd='/tmp/cmd')
build.copy_out('/tmp/cmd/target/release/cmd', bin / 'cmd')
with Container('rust:buster') as build:
build.copy_in('status', '/tmp/status')
build.copy_in('localmc', '/tmp/localmc')
build.copy_in('mcproto-min-async', '/tmp/mcproto-min-async')
build.run(['cargo', 'build', '--release'], pwd='/tmp/status')
build.copy_out('/tmp/status/target/release/status', bin / 'status')
# Download & extract mc-server-runner
with requests.get('https://github.com/itzg/mc-server-runner/releases/download/1.3.3/mc-server-runner_1.3.3_linux_amd64.tar.gz') as resp:
resp.raise_for_status()
with tarfile.open(resp, 'r|*') as tf:
for entry in tf:
if entry.name == 'mc-server-runner':
tf.extract(entry, bin / 'mc-server-runner')
with Container('openjdk:8-jre-slim') as cont:
cont.copy_in(bin / 'cmd', '/usr/bin/cmd')
cont.copy_in(bin / 'status', '/usr/bin/status')
cont.copy_in(bin / 'mc-server-runner', '/mc-server-runner')
cont.volumes |= {
"/mc/world", "/mc/server.properties", "/mc/logs",
"/mc/crash-reports", "/mc/banned-ips.json",
"/mc/banned-players.json", "/mc/ops.json", "/mc/whitelist.json",
}
cont.entrypoint = ["/mc-server-runner", "-shell", "/bin/sh"]
cont.command = ["/mc/launch"]
cont.healthcheck_cmd = ["status"]
cont.healthcheck_start_period = "5m"
return cont.commit()
shpipe
shpipe (#|) lines are used to specify metadata used by buildahscript. The basic form is #| type: data.
pip: Gives a dependency to install from PyPI, as a requirement specifierarg: Defines a build arg, in the Pythonname:type=defaultform, where type is a dotted-form name to a type/parsing function, and default is a python literal.
Licensing
This package is free to use for commercial purposes for a trial period under the terms of the Prosperity Public License.
Licenses for long-term commercial use are available via licensezero.com.
Metadata
Release files for buildahscript 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| buildahscript-0.4.0.tar.gz | 11.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| buildahscript-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.1 kB
Release files / buildahscript-0.4.0.tar.gz
| Download URL | buildahscript-0.4.0.tar.gz |
|---|---|
| Size | 11.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8cf3b762a1899990e9d343dc44a198eb3eb05da0dcdc067faff60fd73af060ea
|
|
BLAKE2b-256 checksum How to use checksums |
1dd64e55fb3ccb4a24f55547a8f61e373c3b3330690a87c39c86dccc2c0187ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.8.3rc1
|
Release files / buildahscript-0.4.0-py3-none-any.whl
| Download URL | buildahscript-0.4.0-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3e2c72b9a41bc4ef800690131c1541c9df60dbd1c856bdcb1ccf528005d6ccf4
|
|
BLAKE2b-256 checksum How to use checksums |
bc7a33bad1f9fe0782ed691a87ab2e1f92cf7b9a125c6f58c0188d87f05e1895
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.8.3rc1
|