{"id":40398687,"url":"https://github.com/jamesewoo/sockeye-serving","last_synced_at":"2026-01-20T13:08:15.660Z","repository":{"id":45537435,"uuid":"166267079","full_name":"jamesewoo/sockeye-serving","owner":"jamesewoo","description":"A containerized service for neural machine translation","archived":false,"fork":false,"pushed_at":"2022-12-08T06:39:15.000Z","size":370,"stargazers_count":9,"open_issues_count":7,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-25T03:01:54.117Z","etag":null,"topics":["docker","machine-translation","server","sockeye","translation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamesewoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-17T17:26:08.000Z","updated_at":"2022-02-17T21:06:14.000Z","dependencies_parsed_at":"2023-01-24T18:15:19.865Z","dependency_job_id":null,"html_url":"https://github.com/jamesewoo/sockeye-serving","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/jamesewoo/sockeye-serving","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesewoo%2Fsockeye-serving","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesewoo%2Fsockeye-serving/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesewoo%2Fsockeye-serving/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesewoo%2Fsockeye-serving/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamesewoo","download_url":"https://codeload.github.com/jamesewoo/sockeye-serving/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesewoo%2Fsockeye-serving/sbom","scorecard":{"id":503760,"data":{"date":"2025-08-11","repo":{"name":"github.com/jamesewoo/sockeye-serving","commit":"66e152e85e1a207a6cb5d8a215b95dad1b9a4fa3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.6,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: docker/cpu/Dockerfile:1: pin your Docker image by updating ubuntu:18.04 to ubuntu:18.04@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98","Warn: containerImage not pinned by hash: docker/gpu/Dockerfile:1","Warn: containerImage not pinned by hash: docker/test/prepare-data/Dockerfile:1: pin your Docker image by updating jwoo11/sockeye-serving:latest-gpu to jwoo11/sockeye-serving:latest-gpu@sha256:4a74d62df8be71e84ef3d95485a92d01fa735ec7b2296690d41eeaca695c46ba","Warn: pipCommand not pinned by hash: docker/cpu/Dockerfile:23-24","Warn: pipCommand not pinned by hash: docker/gpu/Dockerfile:24-26","Info:   0 out of   3 containerImage dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":0,"reason":"69 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: PYSEC-2022-42991 / GHSA-v3c5-jqr6-7qm8","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: PYSEC-2021-41 / GHSA-3wvg-mj6g-m9cv","Warn: Project is vulnerable to: PYSEC-2020-77 / GHSA-3xv8-3j54-hgrp","Warn: Project is vulnerable to: PYSEC-2020-80 / GHSA-43fq-w8qq-v88h","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: GHSA-4fx9-vc88-q2xc","Warn: Project is vulnerable to: PYSEC-2021-35 / GHSA-57h3-9rgr-c24m","Warn: Project is vulnerable to: PYSEC-2020-172 / GHSA-5gm3-px64-rw72","Warn: Project is vulnerable to: PYSEC-2021-331 / GHSA-7534-mm45-c74v","Warn: Project is vulnerable to: PYSEC-2021-137 / GHSA-77gc-v2xv-rvvh","Warn: Project is vulnerable to: PYSEC-2021-92 / GHSA-7r7m-5h27-29hp","Warn: Project is vulnerable to: PYSEC-2020-78 / GHSA-8843-m7mw-mxqm","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: PYSEC-2022-10 / GHSA-8vj2-vxx3-667w","Warn: Project is vulnerable to: PYSEC-2021-36 / GHSA-8xjq-8fcg-g5hw","Warn: Project is vulnerable to: PYSEC-2021-42 / GHSA-95q3-8gr9-gm8w","Warn: Project is vulnerable to: PYSEC-2021-317 / GHSA-98vv-pw6r-q6q4","Warn: Project is vulnerable to: PYSEC-2021-38 / GHSA-9hx2-hgq2-2g4f","Warn: Project is vulnerable to: PYSEC-2022-168 / GHSA-9j59-75qj-795w","Warn: Project is vulnerable to: PYSEC-2020-76 / GHSA-cqhg-xjhh-p8hf","Warn: Project is vulnerable to: PYSEC-2021-40 / GHSA-f4w8-cv6p-x6r5","Warn: Project is vulnerable to: PYSEC-2021-69 / GHSA-f5g8-5qq7-938w","Warn: Project is vulnerable to: PYSEC-2021-139 / GHSA-g6rj-rv7j-xwp4","Warn: Project is vulnerable to: PYSEC-2021-71 / GHSA-hf64-x4gq-p99h","Warn: Project is vulnerable to: PYSEC-2020-84 / GHSA-hj69-c76v-86wr","Warn: Project is vulnerable to: PYSEC-2021-94 / GHSA-hjfx-8p6c-g7gx","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: PYSEC-2019-110 / GHSA-j7mj-748x-7p78","Warn: Project is vulnerable to: GHSA-jgpv-4h4c-xhw3","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2021-37 / GHSA-mvg9-xffr-p774","Warn: Project is vulnerable to: PYSEC-2021-39 / GHSA-p43w-g3c5-g5mq","Warn: Project is vulnerable to: PYSEC-2020-83 / GHSA-p49h-hjvm-jg3h","Warn: Project is vulnerable to: PYSEC-2022-8 / GHSA-pw3c-h7wp-cvhx","Warn: Project is vulnerable to: PYSEC-2021-93 / GHSA-q5hq-fp76-qmrc","Warn: Project is vulnerable to: PYSEC-2020-82 / GHSA-r7rm-8j6h-r933","Warn: Project is vulnerable to: PYSEC-2021-138 / GHSA-rwv7-3v45-hg29","Warn: Project is vulnerable to: PYSEC-2020-81 / GHSA-vcqg-3p29-xw73","Warn: Project is vulnerable to: PYSEC-2020-79 / GHSA-vj42-xq3r-hr3r","Warn: Project is vulnerable to: PYSEC-2021-70 / GHSA-vqcj-wrf2-7v73","Warn: Project is vulnerable to: PYSEC-2022-9 / GHSA-xrcv-f9gm-v42c","Warn: Project is vulnerable to: PYSEC-2023-175","Warn: Project is vulnerable to: PYSEC-2019-41 / GHSA-qfc5-mcwq-26q8","Warn: Project is vulnerable to: PYSEC-2020-92 / GHSA-hj5v-574p-mj7c","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2020-176 / GHSA-3pqx-4fqf-j49f","Warn: Project is vulnerable to: PYSEC-2020-96 / GHSA-6757-jp84-gxfx","Warn: Project is vulnerable to: PYSEC-2021-142 / GHSA-8q59-q68h-6hv4","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: PYSEC-2021-848 / GHSA-ggmr-44cv-24pm","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: PYSEC-2020-149 / GHSA-hmv2-79q8-fv6g","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2021-108 / GHSA-q2q7-5pp4-w6pg","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: PYSEC-2020-148 / GHSA-wqvq-5m8c-6g24","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T22:44:35.106Z","repository_id":45537435,"created_at":"2025-08-19T22:44:35.106Z","updated_at":"2025-08-19T22:44:35.106Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28603436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T12:01:53.233Z","status":"ssl_error","status_checked_at":"2026-01-20T12:01:46.545Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","machine-translation","server","sockeye","translation"],"created_at":"2026-01-20T13:08:14.768Z","updated_at":"2026-01-20T13:08:15.654Z","avatar_url":"https://github.com/jamesewoo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sockeye-serving\n`sockeye-serving` is a containerized service for neural machine translation that uses Amazon's `sockeye` framework as the translation engine.\nThe web server makes use of `mxnet-model-server`, which provides a management API for loading models and a prediction API for requesting translations.\n\nAny Sockeye model can be loaded via the management API.\nText preprocessing is built into the request pipeline and supports a wide variety of languages.\nSpecialized processing for specific languages can be implemented using custom handlers.\n\n## Quickstart\nThis example shows how to serve an existing model for Chinese to English translation.\nFirst, pull the latest Docker image:\n```bash\ndocker pull jwoo11/sockeye-serving\n```\n\nDownload the example model archive (MAR).\nThis is a ZIP archive containing the parameter files and scripts needed to run translation:\n* https://www.dropbox.com/s/pk7hmp7a5zjcfcj/zh.mar?dl=0\n\nExtract the MAR file to `/tmp/models`.\n This directory will be the source for a bind mount for Docker:\n```bash\nunzip -d /tmp/models/zh zh.mar\n```\n\nStart the server:\n```bash\ndocker run -itd --name sockeye_serving -p 8080:8080 -p 8081:8081 -v /tmp/models:/opt/ml/model jwoo11/sockeye-serving\n```\n\nNow, load the model using the management API. Note that the URL of the model is relative to the bind mount:\n```bash\ncurl -X POST \"http://localhost:8081/models?synchronous=true\u0026initial_workers=1\u0026url=zh\"\n```\nGet the status of the model with the following:\n```bash\ncurl -X GET \"http://localhost:8081/models/zh\"\n```\nThe response should look like this:\n```json\n{\n  \"modelName\": \"zh\",\n  \"modelUrl\": \"zh\",\n  \"runtime\": \"python3\",\n  \"minWorkers\": 1,\n  \"maxWorkers\": 1,\n  \"batchSize\": 1,\n  \"maxBatchDelay\": 100,\n  \"workers\": [\n    {\n      \"id\": \"9000\",\n      \"startTime\": \"2019-01-26T00:49:10.431Z\",\n      \"status\": \"READY\",\n      \"gpu\": false,\n      \"memoryUsage\": 601395200\n    }\n  ]\n}\n```\n\nTo translate text use the inference API. Notice that the port is different from above.\n```bash\ncurl -X POST \"http://localhost:8080/predictions/zh\" -H \"Content-Type: application/json\" \\\n    -d '{ \"text\": \"我的世界是一款開放世界遊戲，玩家沒有具體要完成的目標，即玩家有超高的自由度選擇如何玩遊戲\" }'\n```\n\nThe translation quality depends on the model. The provided model returns this translation:\n```json\n{\n  \"translation\": \"in my life was a life of a life of a public public, and a public, a time, a video, a play, which, it was a time of a time of a time.\"\n}\n```\n\nA better model trained on more data returns this response:\n```json\n{\n  \"translation\": \"My world is an open world game, and players have no specific goal to accomplish, that is, players have a high degree of freedom to choose how to play.\"\n}\n```\n\n## Installation\nTo install the command line clients for `sockeye-serving` run the following in a virtual environment:\n```bash\npip install sockeye-serving\n```\nIf you want to install from source, a `Pipfile` is provided.\nClone the repository and run `pipenv install`.\n\nInstallation places the command line interfaces `sockeye-serving` and `sockeye-client` on your virtual environment's path.\n\n## Command Line Interfaces\nYou can use `sockeye-serving` to easily start Docker and to make REST calls to both the management and prediction APIs.\nFirst, a configuration file must be placed in either the current directory or some place referenced by `SOCKEYE_SERVING_CONF`.\nExample properties are located in `config/sockeye-serving.conf`.\nHere's some basic usage:\n```bash\n# start the Docker container\nsockeye-serving start\n\n# deploy a model\nsockeye-serving deploy zh\n\n# list available models\nsockeye-serving list\n\n# translate text\nsockeye-serving translate zh \"my text\"\n\n# upload a file for translation\nsockeye-serving upload zh \"my_file.txt\"\n```\nRun `sockeye-serving help` for a full list of commands.\n\nThe Python client takes a YAML configuration file.\nAn example configuration is in `config/sockeye-client.yml`.\nThis client does not support restarting Docker, however, it does exercise the full API provided by `mxnet-model-server`.\nThe commands which accept query parameters are below:\n```bash\n$ sockeye-client deploy -h\nusage: sockeye-client deploy [-h] [-m MODEL_NAME] [-x HANDLER] [-r RUNTIME]\n                             [-b BATCH_SIZE] [-d MAX_BATCH_DELAY]\n                             [-i INITIAL_WORKERS] [-s] [-t RESPONSE_TIMEOUT]\n                             url\n...\n\n$ sockeye-client list -h\nusage: sockeye-client list [-h] [-l LIMIT] [-t NEXT_PAGE_TOKEN]\n...\n\n$ sockeye-client scale -h\nusage: sockeye-client scale [-h] [-a MIN_WORKER] [-b MAX_WORKER]\n                            [-n NUMBER_GPU] [-s] [-t TIMEOUT]\n                            model_name\n...\n```\nRun `sockeye-client -h` to show a full list of commands.\nFor more information on the API, see [additional documentation](#additional-documentation) for `mxnet-model-server`.\n\n## Jupyter Notebook\nIf you want to translate text with Jupyter, you can use `notebooks/machine_translation.ipynb`.\nMake sure `requests` is installed in your Python environment.\n\n## Choosing between CPUs and GPUs\n`sockeye-serving` provides different image tags for CPUs and GPUs.\nYou can set the desired tag in your `sockeye-serving.conf` file.\nYou'll also need to specify a Sockeye config file `sockeye-args.txt`.\nThis file contains arguments passed to the Sockeye translation engine.\nExample files for both CPU and GPU configs are under `config/sockeye`.\n\nTo use GPUs, ensure `nvidia-docker` is installed on the host machine.\nIn `sockeye-serving.conf` set the image tag to one with \"gpu\" in its name, such as `latest-gpu`, and set `docker_exec=\"nvidia-docker\"`.\nThen run `sockeye-serving update MODEL_NAME config/sockeye/gpu/sockeye-args.txt`.\n\nFor CPUs, use a tag without \"gpu\" in its name, such as `latest`, and use the CPU version of the Sockeye config file.\nThe changes to `sockeye-serving.conf` will be picked up when you run `sockeye-serving start`.\n\n## Initializing Models\nEach model must be initialized with a `MANIFEST.json` file in order for `mxnet-model-server` to deploy it.\nAn easy way to initialize a model is to run `sockeye-serving archive MODEL_NAME HANDLER`, where `HANDLER` is the name of a Python handler module under `src/sockeye_serving`.\nThe provided handlers include `ko_handler` (Korean), `zh_handler` (Chinese), and `default_handler` (generic).\nAfter running the archive command, your model directory should have a file `MAR-INF/MANIFEST.json` that looks like:\n```json\n{\n  \"runtime\": \"python3\",\n  \"model\": {\n    \"modelName\": \"zho\",\n    \"handler\": \"sockeye_serving.zh_handler:handle\"\n  },\n  \"modelServerVersion\": \"1.0\",\n  \"implementationVersion\": \"1.0\",\n  \"specificationVersion\": \"1.0\"\n}\n```\n\n## Enabling TLS\nThe provided configuration instructs the server to use plain HTTP.\nTo enable TLS, you can either supply a Java keystore or a private key and certificate in PEM format.\n\nUsing `config/config.properties` as a starting point, create a new `config.properties` file and save it under `/tmp/models`:\n```properties\nmodel_store=/opt/ml/model\ninference_address=https://0.0.0.0:8443\nmanagement_address=https://0.0.0.0:8444\n```\nSuppose you have a key pair residing on the host at `/path/to/certs`.\nSet the properties for the keystore:\n```properties\nkeystore=/path/to/certs/keystore.p12\nkeystore_pass=changeit\nkeystore_type=PKCS12\n```\nOr provide the path to the server's private key and certificate:\n```properties\nprivate_key_file=/path/to/certs/private.key\ncertificate_file=/path/to/certs/cert.pem\n```\nThen start the container:\n```bash\ndocker run -itd --name sockeye_serving -p 8443:8443 -p 8444:8444 \\\n    -v /path/to/certs:/path/to/certs \\\n    -v /tmp/models:/opt/ml/model jwoo11/sockeye-serving \\\n    mxnet-model-server --start --mms-config /opt/ml/model/config.properties\n```\n\nTo make requests using `curl` you should ensure that you set `--cert`, `--key`, and `--cacert` as needed.\n\n## \u003ca name=\"additional-documentation\"\u003e\u003c/a\u003e Additional Documentation\n\nFor more information on `mxnet-model-server`, see:\n* https://github.com/awslabs/mxnet-model-server/tree/master/docs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesewoo%2Fsockeye-serving","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamesewoo%2Fsockeye-serving","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesewoo%2Fsockeye-serving/lists"}