diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..9efc322b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,72 @@ +# Copyright 2017 AT&T Intellectual Property. All other rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM ubuntu:16.04 + +ENV DEBIAN_FRONTEND noninteractive +ENV container docker + +RUN set -x && \ + apt-get -qq update && \ + apt-get -y install \ + git \ + curl \ + netcat \ + netbase \ + python3 \ + python3-setuptools \ + python3-pip \ + python3-dev \ + python3-dateutil \ + ca-certificates \ + gcc \ + g++ \ + make \ + libffi-dev \ + libssl-dev \ + libpq-dev \ + --no-install-recommends \ + && python3 -m pip install -U pip \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + /usr/share/man \ + /usr/share/doc \ + /usr/share/doc-base + +# Copy dependency requirements +COPY ./requirements.txt /tmp/ +RUN pip3 install -r /tmp/requirements.txt + +# Create deckhand user +RUN useradd -ms /bin/bash deckhand + +# Clone the deckhand repository +COPY ./ /home/deckhand/ + +# Change permissions +RUN chown -R deckhand: /home/deckhand \ + && chmod +x /home/deckhand/entrypoint.sh + +# Expose port 9000 for application +EXPOSE 9000 + +# Set work directory +USER deckhand +WORKDIR /home/deckhand/ + +# Execute entrypoint +ENTRYPOINT ["/home/deckhand/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 00000000..d1faf884 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# +# Copyright 2017 AT&T Intellectual Property. All other rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# Start deckhand application +exec uwsgi \ + --http :9000 \ + -w deckhand.cmd \ + --callable deckhand_callable \ + --enable-threads \ + -L \ + --pyargv "--config-file /etc/deckhand/deckhand.conf" diff --git a/requirements.txt b/requirements.txt index 5456d36c..29e6e3a1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -35,3 +35,4 @@ oslo.serialization!=2.19.1,>=1.10.0 # Apache-2.0 oslo.utils>=3.20.0 # Apache-2.0 python-barbicanclient>=4.0.0 # Apache-2.0 +uwsgi==2.0.15 diff --git a/tox.ini b/tox.ini index 37bb9ce8..db758db7 100644 --- a/tox.ini +++ b/tox.ini @@ -36,7 +36,6 @@ setenv = VIRTUAL_ENV={envdir} deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt gabbi==1.35.1 - uwsgi commands = find . -type f -name "*.pyc" -delete {toxinidir}/tools/functional-tests.sh '{posargs}'