diff --git a/.vscode/launch.json b/.vscode/launch.json
index 4121a9a..d2519d0 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -5,20 +5,11 @@
             "name": "Python Module",
             "type": "python",
             "request": "launch",
-            "stopOnEntry": true,
             "module": "iotedgedev.cli",
             "args": [
-                "solution",
-                "new",
-                "test_solution"
+                "push"
             ],
-            "debugOptions": [
-                "RedirectOutput"
-            ],
-            "env": {
-                "DOTENV_FILE": ".env",
-            }
+            "cwd": "${workspaceFolder}/tests/test_solution"
         }
     ]
-}
-        
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4ab12a3..ee1413c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -18,6 +18,7 @@ Please fork, branch and pull-request any changes you'd like to make.
 1. Install **Python 2.7+**, **Python 3.6+**, and **pip**
     - Windows: [Install from Python's website](https://www.python.org/downloads/)
     - Linux: `sudo apt-get install python-pip python3-pip`
+    - macOS: The OpenSSL used by the system built-in Python is old and vulnerable. Please use Python installed with [Homebrew](https://docs.brew.sh/Homebrew-and-Python).
     
 1. Install **[Azure CLI 2.0](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest)**
 
diff --git a/iotedgedev/dockercls.py b/iotedgedev/dockercls.py
index 99f1a21..7cae0fd 100644
--- a/iotedgedev/dockercls.py
+++ b/iotedgedev/dockercls.py
@@ -43,7 +43,7 @@ class Docker:
             raise ValueError("You must specific a port for your local registry server. Expected: 'localhost:5000'. Found: " + local_server)
 
         port = parts[1]
-        ports = {'{0}/tcp'.format(port): int(port)}
+        ports = {'5000/tcp': int(port)}
 
         try:
             self.output.info("Looking for local 'registry' container")
diff --git a/iotedgedev/template/deployment.template.json b/iotedgedev/template/deployment.template.json
index 80c1a4b..9e20f5f 100644
--- a/iotedgedev/template/deployment.template.json
+++ b/iotedgedev/template/deployment.template.json
@@ -7,7 +7,8 @@
           "type": "docker",
           "settings": {
             "minDockerVersion": "v1.25",
-            "loggingOptions": ""
+            "loggingOptions": "",
+            "registryCredentials": {}
           }
         },
         "systemModules": {

Failed to push to local registry
- iotedgedev Version: 1.0.0rc0
- Python Version: Python2.7 Python3.6 Python3.7
- Pip Version:18.1
- Development machine OS Version: Windows10/Ubuntu18.04/Mac os high sierra 10.13.6
- IoT Edge device OS Version: Windows10/Ubuntu18.04/Mac os high sierra 10.13.6

Steps to Reproduce:
1. iotedgedev new test_solution -m filtermodule -t csharp
2. In .env file, update the CONTAINER_REGISTRY_SERVER with “localhost:5001”
3. Make sure there is no local docker registry in your machine (docker rm -f registry)
4. Run "iotedgedev push"
5. It will throw below error message 1
6. In .env file, update the CONTAINER_REGISTRY_SERVER with “localhost:5000”
7. Run "iotedgedev push"
8. It will throw below error message 2
9. Run "iotedgedev push"
10. It push successfully.

error message 1:
```
INITIALIZING CONTAINER REGISTRY

REGISTRY: localhost:5001
Looking for local 'registry' container
Local 'registry' container not found
Looking for local 'registry' image
Local 'registry' image not found
Pulling 'registry' image
Running registry container

PUSHING DOCKER IMAGE: localhost:5001/filtermodule:0.0.1-amd64
The push refers to repository [localhost:5001/filtermodule]
ERROR: Error: Get http://localhost:5001/v2/: read tcp 127.0.0.1:52290->127.0.0.1:5001: read: connection reset by peer
(py36) v-cheye@ubuntu1804-test10:~/csharp/test_solution$
```

error message 2:
```
INITIALIZING CONTAINER REGISTRY

REGISTRY: localhost:5000
Looking for local 'registry' container
Local 'registry' container not found
Looking for local 'registry' image
Local 'registry' image not found
Pulling 'registry' image
Running registry container

PUSHING DOCKER IMAGE: localhost:5000/filtermodule:0.0.1-amd64
The push refers to repository [localhost:5000/filtermodule]
ERROR: Error: Get http://localhost:5000/v2/: EOF
(py36) v-cheye@ubuntu1804-test10:~/csharp/test_solution$
```
diff --git a/tests/assets/deployment.template_1.json b/tests/assets/deployment.template_1.json
index 3dc499e..3d74b31 100644
--- a/tests/assets/deployment.template_1.json
+++ b/tests/assets/deployment.template_1.json
@@ -7,7 +7,8 @@
           "type": "docker",
           "settings": {
             "minDockerVersion": "v1.25",
-            "loggingOptions": ""
+            "loggingOptions": "",
+            "registryCredentials": {}
           }
         },
         "systemModules": {
diff --git a/tests/assets/deployment.template_2.json b/tests/assets/deployment.template_2.json
index 50fa67d..e1a4fc9 100644
--- a/tests/assets/deployment.template_2.json
+++ b/tests/assets/deployment.template_2.json
@@ -7,7 +7,8 @@
           "type": "docker",
           "settings": {
             "minDockerVersion": "v1.25",
-            "loggingOptions": ""
+            "loggingOptions": "",
+            "registryCredentials": {}
           }
         },
         "systemModules": {
diff --git a/tests/assets/deployment.template_3.json b/tests/assets/deployment.template_3.json
index 7566fd3..ab7b594 100644
--- a/tests/assets/deployment.template_3.json
+++ b/tests/assets/deployment.template_3.json
@@ -7,7 +7,8 @@
           "type": "docker",
           "settings": {
             "minDockerVersion": "v1.25",
-            "loggingOptions": ""
+            "loggingOptions": "",
+            "registryCredentials": {}
           }
         },
         "systemModules": {
diff --git a/tests/assets/deployment.template_4.json b/tests/assets/deployment.template_4.json
index 9909350..6a8384e 100644
--- a/tests/assets/deployment.template_4.json
+++ b/tests/assets/deployment.template_4.json
@@ -7,7 +7,8 @@
           "type": "docker",
           "settings": {
             "minDockerVersion": "v1.25",
-            "loggingOptions": ""
+            "loggingOptions": "",
+            "registryCredentials": {}
           }
         },
         "systemModules": {

pip install -e .
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.6
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
adal==1.2.7
applicationinsights==0.11.9
argcomplete==1.12.3
attrs==22.2.0
azure-cli==2.40.0
azure-cli-cloud==2.1.1
azure-cli-command-modules-nspkg==2.0.3
azure-cli-configure==2.0.24
azure-cli-core==2.31.0
azure-cli-extension==0.2.5
azure-cli-iot==0.3.11
azure-cli-nspkg==3.0.4
azure-cli-profile==2.1.5
azure-cli-resource==2.1.16
azure-cli-telemetry==1.0.6
azure-common==1.1.28
azure-core==1.24.2
azure-mgmt-authorization==0.50.0
azure-mgmt-core==1.3.2
azure-mgmt-iothub==0.8.2
azure-mgmt-iothubprovisioningservices==0.2.0
azure-mgmt-managementgroups==0.1.0
azure-mgmt-nspkg==3.0.2
azure-nspkg==3.0.2
bcrypt==4.0.1
cached-property==1.5.2
certifi==2021.5.30
cffi==1.15.1
charset-normalizer==2.0.12
click==8.0.4
commentjson==0.9.0
cryptography==40.0.2
decorator==5.1.1
distro==1.9.0
docker==5.0.3
docker-compose==1.29.1
dockerpty==0.4.1
docopt==0.6.2
fstrings==0.1.0
humanfriendly==10.0
idna==3.10
importlib-metadata==4.8.3
iniconfig==1.1.1
-e git+https://github.com/Azure/iotedgedev.git@67c63047b53f7e1749d7d9c3985593deae566699#egg=iotedgedev
iotedgehubdev==0.14.18
isodate==0.6.1
jeepney==0.7.1
jmespath==0.10.0
jsonpath-rw==1.4.0
jsonschema==3.2.0
keyring==23.4.1
knack==0.9.0
lark-parser==0.7.8
msal==1.27.0
msal-extensions==0.3.1
msrest==0.7.1
msrestazure==0.4.34
oauthlib==3.2.2
packaging==21.3
paramiko==2.12.0
pkginfo==1.10.0
pluggy==1.0.0
ply==3.11
portalocker==1.7.1
psutil==5.9.8
py==1.11.0
pycparser==2.21
Pygments==2.14.0
PyJWT==2.4.0
PyNaCl==1.5.0
pyOpenSSL==22.0.0
pyparsing==3.1.4
pyrsistent==0.18.0
PySocks==1.7.1
pytest==7.0.1
python-dateutil==2.9.0.post0
python-dotenv==0.20.0
PyYAML==5.4.1
regex==2023.8.8
requests==2.27.1
requests-oauthlib==2.0.0
SecretStorage==3.3.3
six==1.17.0
tabulate==0.8.10
texttable==1.7.0
tomli==1.2.3
typing_extensions==4.1.1
urllib3==1.26.20
websocket-client==0.59.0
zipp==3.6.0

name: iotedgedev
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - adal==1.2.7
      - applicationinsights==0.11.9
      - argcomplete==1.12.3
      - attrs==22.2.0
      - azure-cli==2.40.0
      - azure-cli-cloud==2.1.1
      - azure-cli-command-modules-nspkg==2.0.3
      - azure-cli-configure==2.0.24
      - azure-cli-core==2.31.0
      - azure-cli-extension==0.2.5
      - azure-cli-iot==0.3.11
      - azure-cli-nspkg==3.0.4
      - azure-cli-profile==2.1.5
      - azure-cli-resource==2.1.16
      - azure-cli-telemetry==1.0.6
      - azure-common==1.1.28
      - azure-core==1.24.2
      - azure-mgmt-authorization==0.50.0
      - azure-mgmt-core==1.3.2
      - azure-mgmt-iothub==0.8.2
      - azure-mgmt-iothubprovisioningservices==0.2.0
      - azure-mgmt-managementgroups==0.1.0
      - azure-mgmt-nspkg==3.0.2
      - azure-nspkg==3.0.2
      - bcrypt==4.0.1
      - cached-property==1.5.2
      - cffi==1.15.1
      - charset-normalizer==2.0.12
      - click==8.0.4
      - commentjson==0.9.0
      - cryptography==40.0.2
      - decorator==5.1.1
      - distro==1.9.0
      - docker==5.0.3
      - docker-compose==1.29.1
      - dockerpty==0.4.1
      - docopt==0.6.2
      - fstrings==0.1.0
      - humanfriendly==10.0
      - idna==3.10
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - iotedgehubdev==0.14.18
      - isodate==0.6.1
      - jeepney==0.7.1
      - jmespath==0.10.0
      - jsonpath-rw==1.4.0
      - jsonschema==3.2.0
      - keyring==23.4.1
      - knack==0.9.0
      - lark-parser==0.7.8
      - msal==1.27.0
      - msal-extensions==0.3.1
      - msrest==0.7.1
      - msrestazure==0.4.34
      - oauthlib==3.2.2
      - packaging==21.3
      - paramiko==2.12.0
      - pkginfo==1.10.0
      - pluggy==1.0.0
      - ply==3.11
      - portalocker==1.7.1
      - psutil==5.9.8
      - py==1.11.0
      - pycparser==2.21
      - pygments==2.14.0
      - pyjwt==2.4.0
      - pynacl==1.5.0
      - pyopenssl==22.0.0
      - pyparsing==3.1.4
      - pyrsistent==0.18.0
      - pysocks==1.7.1
      - pytest==7.0.1
      - python-dateutil==2.9.0.post0
      - python-dotenv==0.20.0
      - pyyaml==5.4.1
      - regex==2023.8.8
      - requests==2.27.1
      - requests-oauthlib==2.0.0
      - secretstorage==3.3.3
      - six==1.17.0
      - tabulate==0.8.10
      - texttable==1.7.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - websocket-client==0.59.0
      - zipp==3.6.0
prefix: /opt/conda/envs/iotedgedev

tests/test_utility.py::test_copy_from_template_dir
tests/test_envvars.py::test_default_container_registry_server_key_exists tests/test_envvars.py::test_additional_container_registry_map_has_val
tests/test_azurecli.py::test_lowercase_token_should_be_lowercase_for_name_and_id tests/test_azurecli.py::test_mixedcase_token_should_be_lowercase_for_id_but_unmodified_for_name tests/test_buildoptionsparser.py::test_filter_build_options tests/test_buildoptionsparser.py::test_parse_to_dict tests/test_buildoptionsparser.py::test_parse_to_list tests/test_buildoptionsparser.py::test_parse_val tests/test_buildoptionsparser.py::test_parse_container_limits tests/test_buildoptionsparser.py::test_parse_flag tests/test_buildoptionsparser.py::test_invalid_build_options tests/test_buildoptionsparser.py::test_filtered_valid_build_options tests/test_config.py::test_firsttime tests/test_connectionstring.py::test_empty_connectionstring tests/test_connectionstring.py::test_empty_hostname_iothub_connectionstring tests/test_connectionstring.py::test_empty_iothub_connectionstring tests/test_connectionstring.py::test_empty_device_connectionstring tests/test_connectionstring.py::test_valid_connectionstring tests/test_connectionstring.py::test_valid_iothub_connectionstring tests/test_connectionstring.py::test_valid_devicehub_connectionstring tests/test_connectionstring.py::test_invalid_connectionstring tests/test_connectionstring.py::test_invalid_iothub_connectionstring tests/test_connectionstring.py::test_invalid_devicehub_connectionstring tests/test_decorators.py::test_suppress_all_exceptions tests/test_decorators.py::test_hash256_result tests/test_deploymentmanifest.py::test_get_desired_property tests/test_deploymentmanifest.py::test_get_desired_property_nonexistent_module tests/test_deploymentmanifest.py::test_get_desired_property_nonexistent_prop tests/test_deploymentmanifest.py::test_get_user_modules tests/test_deploymentmanifest.py::test_get_system_modules tests/test_deploymentmanifest.py::test_get_modules_to_process tests/test_deploymentmanifest.py::test_get_modules_to_process_empty tests/test_deploymentmanifest.py::test_add_module_template tests/test_envvars.py::test_valid_get_envvar tests/test_envvars.py::test_invalid_get_envvar tests/test_envvars.py::test_valid_load tests/test_envvars.py::test_valid_verify_envvar_has_val tests/test_envvars.py::test_valid_get_envvar_key_if_val tests/test_envvars.py::test_invalid_get_envvar_key_if_val tests/test_envvars.py::test_set_envvar tests/test_envvars.py::test_envvar_clean tests/test_envvars.py::test_in_command_list_true_1 tests/test_envvars.py::test_in_command_list_true_2 tests/test_envvars.py::test_in_command_list_false_1 tests/test_envvars.py::test_in_command_list_false_2 tests/test_envvars.py::test_in_command_list_empty_1 tests/test_envvars.py::test_in_command_list_empty_2 tests/test_envvars.py::test_in_command_list_empty_3 tests/test_envvars.py::test_is_bypass_command_true tests/test_envvars.py::test_is_bypass_command_false tests/test_envvars.py::test_is_bypass_command_empty tests/test_envvars.py::test_is_terse_command_true tests/test_envvars.py::test_is_terse_command_false tests/test_envvars.py::test_is_terse_command_empty tests/test_envvars.py::test_default_container_registry_server_value_exists tests/test_envvars.py::test_default_container_registry_username_value_exists_or_returns_empty_string tests/test_envvars.py::test_default_container_registry_password_value_exists_or_returns_empty_string tests/test_envvars.py::test_container_registry_server_key_missing_sys_exit tests/test_envvars.py::test_unique_container_registry_server_tokens tests/test_envvars.py::test_unique_container_registry_username_tokens tests/test_envvars.py::test_unique_container_registry_password_tokens tests/test_utility.py::test_ensure_dir tests/test_utility.py::test_copy_template tests/test_utility.py::test_copy_template_expandvars tests/test_utility.py::test_in_asterisk_list tests/test_utility.py::test_in_asterisk_list_empty tests/test_utility.py::test_in_asterisk_list_asterisk tests/test_utility.py::test_get_sha256_hash
CONTRIBUTING.md iotedgedev/dockercls.py .vscode/launch.json iotedgedev/template/deployment.template.json
CONTRIBUTING.md iotedgedev/dockercls.py .vscode/launch.json iotedgedev/template/deployment.template.json