|
1 | 1 | import sys |
2 | 2 | import warnings |
| 3 | +from pathlib import Path |
| 4 | + |
| 5 | +from .write_fastapi import write_app |
| 6 | +from .attach_pkgs import load_pkgs |
| 7 | +from .vetiver_model import VetiverModel |
3 | 8 |
|
4 | 9 |
|
5 | 10 | def vetiver_write_docker( |
@@ -88,5 +93,43 @@ def write_docker( |
88 | 93 | CMD ["uvicorn", "app.app:api", "--host", "{host}", "--port", "{port}"] |
89 | 94 | """ |
90 | 95 |
|
91 | | - f = open(f"{path}Dockerfile", "x") |
| 96 | + f = open(Path(path, "Dockerfile"), "x") |
92 | 97 | f.write(docker_script) |
| 98 | + |
| 99 | + |
| 100 | +def prepare_docker( |
| 101 | + board, |
| 102 | + pin_name: str, |
| 103 | + path: str = "./", |
| 104 | + version=None, |
| 105 | + rspm_env: bool = False, |
| 106 | + host: str = "0.0.0.0", |
| 107 | + port: str = "8080", |
| 108 | +): |
| 109 | + """Create all files needed for Docker |
| 110 | +
|
| 111 | + Parameters |
| 112 | + ---------- |
| 113 | + board : |
| 114 | + Pin board for model |
| 115 | + pin_name : str |
| 116 | + Name of pin |
| 117 | + path : |
| 118 | + Path to output |
| 119 | + version : |
| 120 | + Pin version to be used |
| 121 | + rspm_env: bool |
| 122 | + Whether or not RStudio Package Manager should be used |
| 123 | + host: str |
| 124 | + Host address to run VetiverAPI from Dockerfile |
| 125 | + port: str |
| 126 | + Port to run VetiverAPI from Dockerfile |
| 127 | +
|
| 128 | + """ |
| 129 | + |
| 130 | + v = VetiverModel.from_pin(board=board, name=pin_name, version=version) |
| 131 | + write_app( |
| 132 | + board=board, pin_name=pin_name, version=version, file=Path(path, "app.py") |
| 133 | + ) |
| 134 | + load_pkgs(v, path=Path(path, "vetiver_")) |
| 135 | + write_docker(path=path, rspm_env=rspm_env, host=host, port=port) |
0 commit comments