56 строки
1.6 KiB
Python
56 строки
1.6 KiB
Python
from argparse import ArgumentParser
|
|
import subprocess
|
|
|
|
|
|
class DockerImageBuilder:
|
|
def __init__(self, args):
|
|
self.args = args
|
|
|
|
def build_docker_image(self):
|
|
# if a base image is not specified, we use the Ubuntu 18, CUDA 10 image from NVIDIA
|
|
docker_build_command = [
|
|
"docker",
|
|
"build",
|
|
"--network=host",
|
|
"-t",
|
|
self.args.target_image,
|
|
"-f",
|
|
self.args.dockerfile,
|
|
"--build-arg",
|
|
"BASE_IMAGE=" + self.args.base_image,
|
|
".",
|
|
]
|
|
|
|
print(" ".join(docker_build_command))
|
|
subprocess.call(docker_build_command)
|
|
|
|
|
|
def main(args):
|
|
docker_image_builder = DockerImageBuilder(args)
|
|
docker_image_builder.build_docker_image()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = ArgumentParser(description="AirSim Drone Racing Lab docker image builder")
|
|
parser.add_argument(
|
|
"--dockerfile", type=str, default="Dockerfile", help="path to docker file"
|
|
)
|
|
parser.add_argument(
|
|
"--base_image",
|
|
type=str,
|
|
default="nvidia/cudagl:10.0-devel-ubuntu18.04",
|
|
help="base image name AND tag, on top of which the target image is built",
|
|
)
|
|
parser.add_argument(
|
|
"--target_image", type=str, help="desired name of target image name AND tag"
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
# if a target image name is not specified, let's call it adrl:SOURCE_IMAGE_TAG
|
|
if not args.target_image:
|
|
target_image_tag = args.base_image.split(":")[1]
|
|
args.target_image = "adrl" + ":" + target_image_tag
|
|
|
|
main(args)
|