From aecf4fb3bd3a27c3b430664cb95f3c6312ec7098 Mon Sep 17 00:00:00 2001 From: Tom Faulhaber Date: Sun, 26 Nov 2017 19:54:48 -0800 Subject: [PATCH 1/3] Fix the kernel to match the SageMaker notebook version --- .../scikit_bring_your_own/scikit_bring_your_own.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb b/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb index 90d056112c..e5c3771140 100644 --- a/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb +++ b/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb @@ -487,9 +487,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Environment (conda_python3)", "language": "python", - "name": "python3" + "name": "conda_python3" }, "language_info": { "codemirror_mode": { From 21425e99a525c429e77d86b32e802cb47375ead1 Mon Sep 17 00:00:00 2001 From: Tom Faulhaber Date: Sun, 26 Nov 2017 22:39:04 -0800 Subject: [PATCH 2/3] Comment out the endpoint deletion per convention --- .../scikit_bring_your_own/scikit_bring_your_own.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb b/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb index e5c3771140..323a7fd600 100644 --- a/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb +++ b/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb @@ -481,7 +481,7 @@ "metadata": {}, "outputs": [], "source": [ - "sess.delete_endpoint(predictor.endpoint)" + "# sess.delete_endpoint(predictor.endpoint)" ] } ], From e5d08de07988f06e99f9d58e6cdc175a32b68631 Mon Sep 17 00:00:00 2001 From: Tom Faulhaber Date: Sun, 26 Nov 2017 22:53:37 -0800 Subject: [PATCH 3/3] Change the way we configure logging because hosting changed the way /tmp works --- .../scikit_bring_your_own/container/Dockerfile | 4 ---- .../container/decision_trees/nginx.conf | 6 +++--- .../scikit_bring_your_own/container/decision_trees/serve | 4 ++++ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/advanced_functionality/scikit_bring_your_own/container/Dockerfile b/advanced_functionality/scikit_bring_your_own/container/Dockerfile index 1b649570e8..d77a0d61bd 100644 --- a/advanced_functionality/scikit_bring_your_own/container/Dockerfile +++ b/advanced_functionality/scikit_bring_your_own/container/Dockerfile @@ -33,10 +33,6 @@ ENV PYTHONUNBUFFERED=TRUE ENV PYTHONDONTWRITEBYTECODE=TRUE ENV PATH="/opt/program:${PATH}" -# Make nginx log to stdout/err so that the log messages will be picked up by the -# Docker logger -RUN ln -s /dev/stdout /tmp/nginx.access.log && ln -s /dev/stderr /tmp/nginx.error.log - # Set up the program in the image COPY decision_trees /opt/program WORKDIR /opt/program diff --git a/advanced_functionality/scikit_bring_your_own/container/decision_trees/nginx.conf b/advanced_functionality/scikit_bring_your_own/container/decision_trees/nginx.conf index 3c4144e0b2..cb581acee1 100644 --- a/advanced_functionality/scikit_bring_your_own/container/decision_trees/nginx.conf +++ b/advanced_functionality/scikit_bring_your_own/container/decision_trees/nginx.conf @@ -3,7 +3,7 @@ daemon off; # Prevent forking pid /tmp/nginx.pid; -error_log /tmp/nginx.error.log; +error_log /var/log/nginx/error.log; events { # defaults @@ -12,8 +12,8 @@ events { http { include /etc/nginx/mime.types; default_type application/octet-stream; - access_log /tmp/nginx.access.log combined; - + access_log /var/log/nginx/access.log combined; + upstream gunicorn { server unix:/tmp/gunicorn.sock; } diff --git a/advanced_functionality/scikit_bring_your_own/container/decision_trees/serve b/advanced_functionality/scikit_bring_your_own/container/decision_trees/serve index e01e63db0e..6747fbde09 100755 --- a/advanced_functionality/scikit_bring_your_own/container/decision_trees/serve +++ b/advanced_functionality/scikit_bring_your_own/container/decision_trees/serve @@ -41,6 +41,10 @@ def start_server(): print('Starting the inference server with {} workers.'.format(model_server_workers)) + # link the log streams to stdout/err so they will be logged to the container logs + subprocess.check_call(['ln', '-sf', '/dev/stdout', '/var/log/nginx/access.log']) + subprocess.check_call(['ln', '-sf', '/dev/stderr', '/var/log/nginx/error.log']) + nginx = subprocess.Popen(['nginx', '-c', '/opt/program/nginx.conf']) gunicorn = subprocess.Popen(['gunicorn', '--timeout', str(model_server_timeout),