Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/asottile/dockerfile
Parse a dockerfile into a high-level representation using the official go parser
https://github.com/asottile/dockerfile
docker dockerfile python
Last synced: about 21 hours ago
JSON representation
Parse a dockerfile into a high-level representation using the official go parser
- Host: GitHub
- URL: https://github.com/asottile/dockerfile
- Owner: asottile
- License: mit
- Created: 2017-01-31T19:47:25.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T01:22:11.000Z (about 2 months ago)
- Last Synced: 2024-12-15T01:03:53.983Z (8 days ago)
- Topics: docker, dockerfile, python
- Language: Go
- Size: 247 KB
- Stars: 102
- Watchers: 4
- Forks: 19
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![build status](https://github.com/asottile/dockerfile/actions/workflows/main.yml/badge.svg)](https://github.com/asottile/dockerfile/actions/workflows/main.yml)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/asottile/dockerfile/main.svg)](https://results.pre-commit.ci/latest/github/asottile/dockerfile/main)dockerfile
==========The goal of this repository is to provide a wrapper around
[docker/docker](https://github.com/docker/docker)'s parser for dockerfiles.## python library
### Installation
This project uses [setuptools-golang](https://github.com/asottile/setuptools-golang)
when built from source. To build from source you'll need a go compiler.If you're using linux and sufficiently new pip (>=8.1) you should be able to
just download prebuilt manylinux1 wheels.```
pip install dockerfile
```### Usage
There's three api functions provided by this library:
#### `dockerfile.all_cmds()`
List all of the known dockerfile cmds.
```python
>>> dockerfile.all_cmds()
('add', 'arg', 'cmd', 'copy', 'entrypoint', 'env', 'expose', 'from', 'healthcheck', 'label', 'maintainer', 'onbuild', 'run', 'shell', 'stopsignal', 'user', 'volume', 'workdir')
```#### `dockerfile.parse_file(filename)`
Parse a Dockerfile by filename.
Returns a `tuple` of `dockerfile.Command` objects representing each layer of
the Dockerfile.
Possible exceptions:
- `dockerfile.GoIOError`: The file could not be opened.
- `dockerfile.GoParseError`: The Dockerfile was not parseable.```python
>>> pprint.pprint(dockerfile.parse_file('testfiles/Dockerfile.ok'))
(Command(cmd='from', sub_cmd=None, json=False, original='FROM ubuntu:xenial', start_line=1, flags=(), value=('ubuntu:xenial',)),
Command(cmd='cmd', sub_cmd=None, json=True, original='CMD ["echo", "hi"]', start_line=2, flags=(), value=('echo', 'hi')))
```#### `dockerfile.parse_string(s)`
Parse a dockerfile using a string.
Returns a `tuple` of `dockerfile.Command` objects representing each layer of
the Dockerfile.
Possible exceptions:
- `dockerfile.GoParseError`: The Dockerfile was not parseable.```python
>>> dockerfile.parse_string('FROM ubuntu:xenial')
(Command(cmd='from', sub_cmd=None, json=False, original='FROM ubuntu:xenial', start_line=1, flags=(), value=('ubuntu:xenial',)),)
```## go library
Slightly more convenient than the api provided by docker/docker? Might not be
terribly useful -- the main point of this repository was a python wrapper.### Installation
```
go get github.com/asottile/dockerfile
```### Usage
[godoc](https://godoc.org/github.com/asottile/dockerfile)