It can create a container based on the local image. If the image does not exist, the image will be pulled down. If the container exists, it will be started directly. Then execute any service you want to execute in the container.
Project description
easier-docker
Repository Introduction
This is based on docker-py which makes it easier to run your program in docker. It can create a container based on the local image. If the image does not exist, the image will be pulled down. If the container exists, it will be started directly. Then execute any service you want to execute in the container.
Install
pip install easier-docker
Usage
💡 Please check config parameters in Docker SDK for Python
Use examples in code
python example.py
# example.py
import os
from easierdocker import EasierDocker
if __name__ == '__main__':
host_script = os.path.dirname(os.path.abspath(__file__))
container_script = '/path/to/container'
config = {
'image': 'python:3.9',
'name': 'python_test',
'volumes': {
f'{host_script}': {'bind': container_script, 'mode': 'rw'}
},
'detach': True,
'command': ["sh", "-c", f'cd {container_script} &&'
'python docker_example.py'],
}
easier_docker = EasierDocker(config)
easier_docker.start()
"""
>>> 2023-11-27 14:40:29,264 - INFO - easier-docker ==> Find docker image: [python:3.9] locally...:
>>> 2023-11-27 14:40:29,280 - INFO - easier-docker ==> Image: [python:3.9] is found locally
>>> 2023-11-27 14:40:29,280 - INFO - easier-docker ==> Find docker container: [python_test] locally...:
>>> 2023-11-27 14:40:29,284 - INFO - easier-docker ==> ContainerNotFound: [python_test], it will be created
>>> 2023-11-27 14:40:29,558 - INFO - easier-docker ==> Container name: [python_test] is running
>>> 2023-11-27 14:40:29,558 - INFO - easier-docker ==> Container id: [58509ced60ba] is running
>>> 2023-11-27 14:40:29,559 - INFO - easier-docker ==> Successfully container is running and be created at 2023-11-27T06:40:29.291320745Z
"""
The content of docker_example.py is
# docker_example.py
def main():
import logging
import time
for i in range(1, 101):
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logging.info(f'sleep 30s, times:{i}')
time.sleep(30)
if __name__ == '__main__':
main()
Run directly from configuration file
Currently supports yaml
easier-docker -c config.yaml
The content of config.yaml is
# config.yaml
image: python:3.9
name: python_test
volumes:
/Users/admin/data/code_project/easier-docker/tests:
bind: /path/to/container
mode: rw
detach: true
command:
- sh
- -c
- cd /path/to/container && python docker_example.py
Related Repository
- docker-py — A Python library for the Docker Engine API.
Related Materials
Related Uses Repository
- opsariichthys-bidens — About Building a Basic Information API for Chinese National Universities in the Handheld College Entrance Examination Based on Fastapi.
Maintainers
Contributing
How I wish I could add more content in this repo ! Feel free to dive in! Open an issue or submit PRs. Standard Python follows the Python PEP-8 Code of Conduct.
Contributors
This project exists thanks to all the people who contribute.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for easier_docker-2.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0ec60ae37bdd70ccdc511acdba8292fd75fdcd22e733049c3b109c1e5204d91 |
|
MD5 | ec57495f0f3c172ce4a90440fdc97123 |
|
BLAKE2b-256 | 14a5d5d815b981b2c84402f8c216d7faaf77d94fc9308c5b03e1b34efb5e3789 |