poetry-dockerize-plugin


Namepoetry-dockerize-plugin JSON
Version 1.3.1 PyPI version JSON
download
home_pagehttps://github.com/nicoloboschi/poetry-dockerize-plugin
SummaryPoetry application to Docker, automatically.
upload_time2024-10-14 09:24:09
maintainerNone
docs_urlNone
authorNicolò Boschi
requires_python<4.0,>=3.9
licenseMIT
keywords poetry packaging docker
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Poetry Dockerize Plugin

<p align="center">
  <a href="https://pypi.org/project/poetry-dockerize-plugin/">
    <img src="https://img.shields.io/pypi/v/poetry-dockerize-plugin?color=green&amp;label=pypi%20package" alt="PyPI">
  </a>
  <a href="https://pepy.tech/project/poetry-dockerize-plugin">
    <img src="https://static.pepy.tech/badge/poetry-dockerize-plugin" alt="Downloads">
  </a>
  <a href="">
    <img src="https://img.shields.io/pypi/pyversions/poetry-dockerize-plugin?color=green" alt="Py versions">
  </a>
</p>


Key features:

* Automatically generate a docker image from your Poetry application.
* Highly configurable. You can configure the image by adding a section in the `pyproject.toml` configuration file.

## Installation

In order to install the plugin you need to have installed a poetry version `>=1.2.0` and type:

```bash
poetry self add poetry-dockerize-plugin@latest
```

## Quickstart

No configuration needed! Just type:
```bash
poetry dockerize
>Building image: poetry-sample-app:latest
>Successfully built image: poetry-sample-app:latest
docker run --rm -it poetry-sample-app:latest
>hello world!
```

### Usage in GitHub Actions
You just need to run the quickstart command in your GitHub Actions workflow:
```yaml

name: Build and publish latest

on:
  push:
    branches: main

jobs:
  login:
    runs-on: ubuntu-latest
    steps:
        - name: Install Poetry
          uses: snok/install-poetry@v1

        - name: Install poetry-dockerize-plugin
          run: poetry self add poetry-dockerize-plugin@latest

        - name: Build and package
          run: |
            poetry install
            poetry run pytest
            poetry dockerize

        - name: Login to Docker Hub
          uses: docker/login-action@v3
          with:
            username: ${{ secrets.DOCKERHUB_USERNAME }}
            password: ${{ secrets.DOCKERHUB_TOKEN }}

        - name: Push to Docker Hub
          run: docker push my-app:latest
```

## Configuration via pyproject.toml
To customize some options, you can add a `[tool.dockerize]` section in your `pyproject.toml` file. For example to change the image name:

```toml
[tool.dockerize]
name = "myself/myproject-app"
```

## Configuration via environment variables
You can also pass any option via environment variable by prefixing the key with `DOCKERIZE_`. For example, to set the `entrypoint` you can use the `DOCKERIZE_ENTRYPOINT` environment variable:

```bash
export DOCKERIZE_ENTRYPOINT="python -m myapp"
poetry dockerize
```

or use a .env file which will be loaded by the plugin:
```
echo "DOCKERIZE_ENTRYPOINT=python -m myapp" > .env
poetry dockerize
```

For dicts such as `env` and `labels`, you can set multiple values by adding multiple variables:

```bash
export DOCKERIZE_ENV_MY_VAR="my_value"
export DOCKERIZE_ENV_MY_OTHER_VAR="my_other_value"
export DOCKERIZE_LABELS_MY_LABEL="label1"
poetry dockerize
```


## Configuration API Reference

This examples shows a complete configuration of the docker image:

```toml
[tool.dockerize]
name = "alternative-image-name"
python = "3.12"
base-image = "python:3.12-slim"
tags = ["latest-dev"]
entrypoint = ["python", "-m", "whatever"]
ports = [5000]
env = {"MY_APP_ENV" = "dev"}
labels = {"MY_APP_LABEL" = "dev"}
apt-packages = ["curl"]
extra-run-instructions = ["RUN curl https://huggingface.co/transformers/"]

# Only for build docker layer
build-apt-packages = ["gcc"]
extra-build-instructions = ["RUN poetry config http-basic.foo <username> <password>"]
build-poetry-install-args = ["-E", "all", "--no-root"]

```

* `name` customizes the docker image name. 
* `python` python version to use. If not specified, will try to be extracted from `tool.poetry.dependencies.python`. Default is `3.11`
* `base-image` customizes the base image. If not defined, the default base image is `python:<python-version>-slim-bookworm`. 
* `tags` declares a list of tags for the image.
* `entrypoint` customizes the entrypoint of the image. If not provided, the default entrypoint is retrieved from the `packages` configuration.
* `ports` exposes ports
* `env` declares environment variables inside the docker image.
* `labels` append labels to the docker image. Default labels are added following the opencontainers specification.
* `apt-packages` installs apt packages inside the docker image.
* `extra-run-instructions` adds extra instructions to the docker run (after poetry install). Any modification to the filesystem will be kept after the poetry install.

For the build step:
* `build-apt-packages` installs apt packages inside the build docker container.
* `extra-build-instructions` adds extra instructions to the docker build (before poetry install). Any modification to the filesystem will be lost after the poetry install. If you need to add files to the image, use the `extra-run-instructions`.
* `build-poetry-install-args` adds additional arguments to the `poetry install` command in the build step.


## Command line options

All command line options provided by the `poetry-dockerize-plugin` may be accessed by typing:

```bash
poetry dockerize --help
```

## Troubleshooting

To troubleshoot the plugin, you can use the `--debug` flag to get more information about the execution.

```bash
poetry dockerize --debug
```

## Generate Dockerfile

To only generate the Dockerfile, you can use the `--generate` flag.

```bash
poetry dockerize --generate
```

Then you can store the Dockerfile on the repository and use it as a template and customize it as you need. 

## License

This project is licensed under the terms of the MIT license.


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/nicoloboschi/poetry-dockerize-plugin",
    "name": "poetry-dockerize-plugin",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "poetry, packaging, docker",
    "author": "Nicol\u00f2 Boschi",
    "author_email": "boschi1997@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/3c/97/7ad18ec1bc2489970588f975875b7237a8c0cc635aedb90fe4c91a1825f0/poetry_dockerize_plugin-1.3.1.tar.gz",
    "platform": null,
    "description": "# Poetry Dockerize Plugin\n\n<p align=\"center\">\n  <a href=\"https://pypi.org/project/poetry-dockerize-plugin/\">\n    <img src=\"https://img.shields.io/pypi/v/poetry-dockerize-plugin?color=green&amp;label=pypi%20package\" alt=\"PyPI\">\n  </a>\n  <a href=\"https://pepy.tech/project/poetry-dockerize-plugin\">\n    <img src=\"https://static.pepy.tech/badge/poetry-dockerize-plugin\" alt=\"Downloads\">\n  </a>\n  <a href=\"\">\n    <img src=\"https://img.shields.io/pypi/pyversions/poetry-dockerize-plugin?color=green\" alt=\"Py versions\">\n  </a>\n</p>\n\n\nKey features:\n\n* Automatically generate a docker image from your Poetry application.\n* Highly configurable. You can configure the image by adding a section in the `pyproject.toml` configuration file.\n\n## Installation\n\nIn order to install the plugin you need to have installed a poetry version `>=1.2.0` and type:\n\n```bash\npoetry self add poetry-dockerize-plugin@latest\n```\n\n## Quickstart\n\nNo configuration needed! Just type:\n```bash\npoetry dockerize\n>Building image: poetry-sample-app:latest\n>Successfully built image: poetry-sample-app:latest\ndocker run --rm -it poetry-sample-app:latest\n>hello world!\n```\n\n### Usage in GitHub Actions\nYou just need to run the quickstart command in your GitHub Actions workflow:\n```yaml\n\nname: Build and publish latest\n\non:\n  push:\n    branches: main\n\njobs:\n  login:\n    runs-on: ubuntu-latest\n    steps:\n        - name: Install Poetry\n          uses: snok/install-poetry@v1\n\n        - name: Install poetry-dockerize-plugin\n          run: poetry self add poetry-dockerize-plugin@latest\n\n        - name: Build and package\n          run: |\n            poetry install\n            poetry run pytest\n            poetry dockerize\n\n        - name: Login to Docker Hub\n          uses: docker/login-action@v3\n          with:\n            username: ${{ secrets.DOCKERHUB_USERNAME }}\n            password: ${{ secrets.DOCKERHUB_TOKEN }}\n\n        - name: Push to Docker Hub\n          run: docker push my-app:latest\n```\n\n## Configuration via pyproject.toml\nTo customize some options, you can add a `[tool.dockerize]` section in your `pyproject.toml` file. For example to change the image name:\n\n```toml\n[tool.dockerize]\nname = \"myself/myproject-app\"\n```\n\n## Configuration via environment variables\nYou can also pass any option via environment variable by prefixing the key with `DOCKERIZE_`. For example, to set the `entrypoint` you can use the `DOCKERIZE_ENTRYPOINT` environment variable:\n\n```bash\nexport DOCKERIZE_ENTRYPOINT=\"python -m myapp\"\npoetry dockerize\n```\n\nor use a .env file which will be loaded by the plugin:\n```\necho \"DOCKERIZE_ENTRYPOINT=python -m myapp\" > .env\npoetry dockerize\n```\n\nFor dicts such as `env` and `labels`, you can set multiple values by adding multiple variables:\n\n```bash\nexport DOCKERIZE_ENV_MY_VAR=\"my_value\"\nexport DOCKERIZE_ENV_MY_OTHER_VAR=\"my_other_value\"\nexport DOCKERIZE_LABELS_MY_LABEL=\"label1\"\npoetry dockerize\n```\n\n\n## Configuration API Reference\n\nThis examples shows a complete configuration of the docker image:\n\n```toml\n[tool.dockerize]\nname = \"alternative-image-name\"\npython = \"3.12\"\nbase-image = \"python:3.12-slim\"\ntags = [\"latest-dev\"]\nentrypoint = [\"python\", \"-m\", \"whatever\"]\nports = [5000]\nenv = {\"MY_APP_ENV\" = \"dev\"}\nlabels = {\"MY_APP_LABEL\" = \"dev\"}\napt-packages = [\"curl\"]\nextra-run-instructions = [\"RUN curl https://huggingface.co/transformers/\"]\n\n# Only for build docker layer\nbuild-apt-packages = [\"gcc\"]\nextra-build-instructions = [\"RUN poetry config http-basic.foo <username> <password>\"]\nbuild-poetry-install-args = [\"-E\", \"all\", \"--no-root\"]\n\n```\n\n* `name` customizes the docker image name. \n* `python` python version to use. If not specified, will try to be extracted from `tool.poetry.dependencies.python`. Default is `3.11`\n* `base-image` customizes the base image. If not defined, the default base image is `python:<python-version>-slim-bookworm`. \n* `tags` declares a list of tags for the image.\n* `entrypoint` customizes the entrypoint of the image. If not provided, the default entrypoint is retrieved from the `packages` configuration.\n* `ports` exposes ports\n* `env` declares environment variables inside the docker image.\n* `labels` append labels to the docker image. Default labels are added following the opencontainers specification.\n* `apt-packages` installs apt packages inside the docker image.\n* `extra-run-instructions` adds extra instructions to the docker run (after poetry install). Any modification to the filesystem will be kept after the poetry install.\n\nFor the build step:\n* `build-apt-packages` installs apt packages inside the build docker container.\n* `extra-build-instructions` adds extra instructions to the docker build (before poetry install). Any modification to the filesystem will be lost after the poetry install. If you need to add files to the image, use the `extra-run-instructions`.\n* `build-poetry-install-args` adds additional arguments to the `poetry install` command in the build step.\n\n\n## Command line options\n\nAll command line options provided by the `poetry-dockerize-plugin` may be accessed by typing:\n\n```bash\npoetry dockerize --help\n```\n\n## Troubleshooting\n\nTo troubleshoot the plugin, you can use the `--debug` flag to get more information about the execution.\n\n```bash\npoetry dockerize --debug\n```\n\n## Generate Dockerfile\n\nTo only generate the Dockerfile, you can use the `--generate` flag.\n\n```bash\npoetry dockerize --generate\n```\n\nThen you can store the Dockerfile on the repository and use it as a template and customize it as you need. \n\n## License\n\nThis project is licensed under the terms of the MIT license.\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Poetry application to Docker, automatically.",
    "version": "1.3.1",
    "project_urls": {
        "Documentation": "https://github.com/nicoloboschi/poetry-dockerize-plugin",
        "Homepage": "https://github.com/nicoloboschi/poetry-dockerize-plugin",
        "Repository": "https://github.com/nicoloboschi/poetry-dockerize-plugin"
    },
    "split_keywords": [
        "poetry",
        " packaging",
        " docker"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7ff30e53432816802ed4530950b70cda94458e2f3ae4ec034be0cf77fb1e532f",
                "md5": "c1f4d8927572d7b98c622f7007651eab",
                "sha256": "828de3825017e713adf229525ad08fbf0c42b23a9deca83e88faf17b241469d1"
            },
            "downloads": -1,
            "filename": "poetry_dockerize_plugin-1.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c1f4d8927572d7b98c622f7007651eab",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 9969,
            "upload_time": "2024-10-14T09:24:08",
            "upload_time_iso_8601": "2024-10-14T09:24:08.229250Z",
            "url": "https://files.pythonhosted.org/packages/7f/f3/0e53432816802ed4530950b70cda94458e2f3ae4ec034be0cf77fb1e532f/poetry_dockerize_plugin-1.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3c977ad18ec1bc2489970588f975875b7237a8c0cc635aedb90fe4c91a1825f0",
                "md5": "ee9323eea87b3325cded26c81b3fc8a4",
                "sha256": "ab8a1adafb24645bb1efca6d45fa9bd01c9237bc2696ba65d499ff8c98b3a615"
            },
            "downloads": -1,
            "filename": "poetry_dockerize_plugin-1.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "ee9323eea87b3325cded26c81b3fc8a4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 10580,
            "upload_time": "2024-10-14T09:24:09",
            "upload_time_iso_8601": "2024-10-14T09:24:09.790341Z",
            "url": "https://files.pythonhosted.org/packages/3c/97/7ad18ec1bc2489970588f975875b7237a8c0cc635aedb90fe4c91a1825f0/poetry_dockerize_plugin-1.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-14 09:24:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nicoloboschi",
    "github_project": "poetry-dockerize-plugin",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "poetry-dockerize-plugin"
}
        
Elapsed time: 0.41382s