|
| 1 | +# requires installation of Docker: https://docs.docker.com/install/ |
| 2 | + |
| 3 | +from subprocess import check_output, CalledProcessError, STDOUT, Popen, PIPE |
| 4 | +import os |
| 5 | +import getpass |
| 6 | + |
| 7 | +def execute_cmd (cmd): |
| 8 | + if os.name=="nt": |
| 9 | + process = Popen(cmd.split(),stdin=PIPE, shell=True) |
| 10 | + else: |
| 11 | + process = Popen(cmd.split(),stdin=PIPE) |
| 12 | + stdout, stderr = process.communicate() |
| 13 | + if (stderr is not None): |
| 14 | + raise Exception(stderr) |
| 15 | + |
| 16 | +SOURCE_DOCKER_REGISTRY = input("Provide Docker registry source - press ENTER for using `private-repo.microsoft.com`:") or "private-repo.microsoft.com" |
| 17 | +SOURCE_DOCKER_REPOSITORY = input("Provide Docker repository source - press ENTER for using `mssql-private-preview`:") or "mssql-private-preview" |
| 18 | +SOURCE_DOCKER_USERNAME = input("Provide Docker username for the source registry:") |
| 19 | +SOURCE_DOCKER_PASSWORD=getpass.getpass("Provide Docker password for the source registry:") |
| 20 | +SOURCE_DOCKER_TAG = input("Provide Docker tag for the images at the source: ") or "latest" |
| 21 | + |
| 22 | +TARGET_DOCKER_REGISTRY = input("Provide Docker registry target:") |
| 23 | +TARGET_DOCKER_REPOSITORY = input("Provide Docker repository target:") |
| 24 | +TARGET_DOCKER_USERNAME = input("Provide Docker username for the target registry:") |
| 25 | +TARGET_DOCKER_PASSWORD = getpass.getpass("Provide Docker password for the target registry:") |
| 26 | +TARGET_DOCKER_TAG = input("Provide Docker tag for the images at the target: ") or "latest" |
| 27 | + |
| 28 | +images = [ 'mssql-appdeploy-init', |
| 29 | + 'mssql-monitor-fluentbit', |
| 30 | + 'mssql-monitor-collectd', |
| 31 | + 'mssql-server-data', |
| 32 | + 'mssql-hadoop', |
| 33 | + 'mssql-java', |
| 34 | + 'mssql-mlservices-pythonserver', |
| 35 | + 'mssql-mlservices-rserver', |
| 36 | + 'mssql-monitor-elasticsearch', |
| 37 | + 'mssql-monitor-influxdb', |
| 38 | + 'mssql-security-knox', |
| 39 | + 'mssql-mlserver-r-runtime', |
| 40 | + 'mssql-mlserver-py-runtime', |
| 41 | + 'mssql-controller', |
| 42 | + 'mssql-portal', |
| 43 | + 'mssql-server-controller', |
| 44 | + 'mssql-monitor-grafana', |
| 45 | + 'mssql-monitor-kibana', |
| 46 | + 'mssql-service-proxy', |
| 47 | + 'mssql-app-service-proxy', |
| 48 | + 'mssql-ssis-app-runtime', |
| 49 | + 'mssql-monitor-telegraf'] |
| 50 | + |
| 51 | +print("Execute docker login to source registry: " + SOURCE_DOCKER_REGISTRY) |
| 52 | +cmd = "docker login " + SOURCE_DOCKER_REGISTRY + " -u " + SOURCE_DOCKER_USERNAME + " -p " + SOURCE_DOCKER_PASSWORD |
| 53 | +execute_cmd(cmd) |
| 54 | +print("") |
| 55 | + |
| 56 | + |
| 57 | +print("Pulling images from source repository: " + SOURCE_DOCKER_REGISTRY + "/" + SOURCE_DOCKER_REPOSITORY) |
| 58 | +cmd = "" |
| 59 | +for image in images: |
| 60 | + cmd += "docker pull " + SOURCE_DOCKER_REGISTRY + "/" + SOURCE_DOCKER_REPOSITORY + "/" + image + ":" + SOURCE_DOCKER_TAG + " & " |
| 61 | +cmd = cmd[:len(cmd)-3] |
| 62 | +execute_cmd(cmd) |
| 63 | + |
| 64 | +print("Execute docker login to target registry:" + TARGET_DOCKER_REGISTRY) |
| 65 | +cmd = "docker login " + TARGET_DOCKER_REGISTRY + " -u " + TARGET_DOCKER_USERNAME + " -p " + TARGET_DOCKER_PASSWORD |
| 66 | +execute_cmd(cmd) |
| 67 | +print("") |
| 68 | + |
| 69 | +print("Tagging local images...") |
| 70 | +cmd = "" |
| 71 | +for image in images: |
| 72 | + cmd += "docker tag " + SOURCE_DOCKER_REGISTRY + "/" + SOURCE_DOCKER_REPOSITORY + "/" + image + ":" + SOURCE_DOCKER_TAG + " " + TARGET_DOCKER_REGISTRY + "/" + TARGET_DOCKER_REPOSITORY + "/" + image + ":" + TARGET_DOCKER_TAG + " & " |
| 73 | +cmd = cmd[:len(cmd)-3] |
| 74 | +execute_cmd(cmd) |
| 75 | + |
| 76 | +print("Push images to target Docker repository: " + TARGET_DOCKER_REGISTRY + "/" + TARGET_DOCKER_REPOSITORY) |
| 77 | +cmd = "" |
| 78 | +for image in images: |
| 79 | + cmd += "docker push " + TARGET_DOCKER_REGISTRY + "/" + TARGET_DOCKER_REPOSITORY + "/" + image + ":" + TARGET_DOCKER_TAG + " & " |
| 80 | +cmd = cmd[:len(cmd)-3] |
| 81 | +execute_cmd(cmd) |
| 82 | + |
| 83 | +print("Images are now pushed to the target repository.") |
| 84 | +cmd = "docker images" |
| 85 | +execute_cmd(cmd) |
| 86 | + |
0 commit comments