https://github.com/aleroxac/docker-build-args
https://github.com/aleroxac/docker-build-args
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/aleroxac/docker-build-args
- Owner: aleroxac
- Created: 2024-09-11T23:37:08.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-09-15T13:34:03.000Z (8 months ago)
- Last Synced: 2025-01-16T16:23:36.537Z (4 months ago)
- Language: Python
- Size: 10.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# docker-build-args
Utility to facilitate the composition of arguments during docker image builds## Use Cases
Hadolint
### [Hadolint Scans](examples/hadolint/README.md)
- If you try to scan a Dockerfile with LABELs passing environment variables as value, will came across with the error [DL3048(Invalid label key)](https://github.com/hadolint/hadolint/wiki/DL3048) (if you are not using a hadolint config file)
- Possible errors if you are using a config file
- [DL3052 - invalid url](https://github.com/hadolint/hadolint/wiki/DL3052)
- [DL3053 - invalid RFC3339 time format](https://github.com/hadolint/hadolint/wiki/DL3053)
- [DL3054 - invalid spdx license format](https://github.com/hadolint/hadolint/wiki/DL3054)
- [DL3055 - invalid git hash](https://github.com/hadolint/hadolint/wiki/DL3055)
- [DL3056 - invalid semantic versioning](https://github.com/hadolint/hadolint/wiki/DL3056)
- [DL3058 - invalid RFC5322 email format](https://github.com/hadolint/hadolint/wiki/DL3058)Labels
### [Docker Image Labels](examples/labels/README.md)
- If you build a container image without set the raw values in your `LABEL` dockerfile instructions, when you inspect that, will see that all your labels were created, but with no value``` shell
docker inspect aleroxac/docker-build-args:example --format "{{json .Config.Labels}}" | jq
{
"maintainer": "",
"org.label-schema.author-email": "",
"org.label-schema.author-name": "",
"org.label-schema.author-title": "",
"org.label-schema.author-username": "",
"org.label-schema.base": "",
"org.label-schema.build-date": "",
"org.label-schema.description": "",
"org.label-schema.docker.cmd": "",
"org.label-schema.docker.cmd.debug": "",
"org.label-schema.docker.cmd.devel": "",
"org.label-schema.docker.cmd.help": "",
"org.label-schema.docker.cmd.test": "",
"org.label-schema.docker.params": "",
"org.label-schema.license": "",
"org.label-schema.name": "",
"org.label-schema.os-name": "",
"org.label-schema.os-version": "",
"org.label-schema.schema-version": "",
"org.label-schema.url": "",
"org.label-schema.usage": "",
"org.label-schema.vcs-ref": "",
"org.label-schema.vcs-url": "",
"org.label-schema.version": "",
"vendor": ""
}
```## Installation
``` shell
git clone [email protected]/aleroxac/docker-build-args.git
cd docker-build-args
make installcd ~/my-awesome-project
cat << EOF | tee -a docker-build-args.env
API_PORT=8080
IMAGE_MAINTAINER="[email protected]"
BUILD_DATE=$(TZ="America/Sao_Paulo" date +'%Y-%m-%dT%H:%M:%SZ')
SCHEMA_VERSION='1.0.0-rc.1'
LICENSE='Apache-2.0'
OS_NAME=$(docker run --rm --entrypoint='' golang:1.23.0 grep -E '^ID' /etc/os-release | cut -d= -f2)
OS_VERSION=$(docker run --rm --entrypoint='' golang:1.23.0 grep -E '^VERSION_ID' /etc/os-release | cut -d= -f2| tr -d '"')
EOF
docker-build-args Dockerfile docker-build-args.env
```## Use mode
``` shell
cd examples/hadolint/
docker-build-args Dockerfile .docker-build-args.env > .env
source <(sed "s/^/export /g" .env)
cat Dockerfile | envsubst > Dockerfile.tmp
docker build \
--build-arg API_PORT=${API_PORT} \
--build-arg IMAGE_MAINTAINER=${IMAGE_MAINTAINER} \
--build-arg IMAGE_VENDOR=${IMAGE_VENDOR} \
--build-arg AUTHOR_NAME=${AUTHOR_NAME} \
--build-arg AUTHOR_USERNAME=${AUTHOR_USERNAME} \
--build-arg AUTHOR_TITLE=${AUTHOR_TITLE} \
--build-arg AUTHOR_EMAIL=${AUTHOR_EMAIL} \
--build-arg LICENSE=${LICENSE} \
--build-arg SCHEMA_VERSION=${SCHEMA_VERSION} \
--build-arg VCS_REF=${VCS_REF} \
--build-arg VCS_URL=${VCS_URL} \
--build-arg BUILD_DATE=${BUILD_DATE} \
--build-arg IMAGE_NAME=${IMAGE_NAME} \
--build-arg IMAGE_BASE=${IMAGE_BASE} \
--build-arg IMAGE_VERSION=${IMAGE_VERSION} \
--build-arg IMAGE_DESCRIPTION=${IMAGE_DESCRIPTION} \
--build-arg IMAGE_USAGE=${IMAGE_USAGE} \
--build-arg IMAGE_URL=${IMAGE_URL} \
--build-arg OS_NAME=${OS_NAME} \
--build-arg OS_VERSION=${OS_VERSION} \
--build-arg DOCKER_CMD=${DOCKER_CMD} \
--build-arg DOCKER_CMD_DEVEL=${DOCKER_CMD_DEVEL} \
--build-arg DOCKER_CMD_TEST=${DOCKER_CMD_TEST} \
--build-arg DOCKER_CMD_DEBUG=${DOCKER_CMD_DEBUG} \
--build-arg DOCKER_CMD_HELP=${DOCKER_CMD_HELP} \
--build-arg DOCKER_PARAMS=${DOCKER_PARAMS} \
-t docker-build-args/example:v1 \
-t docker-build-args/example:latest \
-f Dockerfile.tmp .hadolint -c hadolint.yaml Dockerfile.tmp > hadolint-$(date '+%Y%m%dT%H%M%S').log
rm -f Dockerfile.tmp
```## Uninstallation
``` shell
cd docker-build-args
make uninstall
```