Skip to content

Commit 4a9d576

Browse files
author
Peter Amstutz
committed
Dockerfile to run service
1 parent a712a89 commit 4a9d576

File tree

5 files changed

+81
-9
lines changed

5 files changed

+81
-9
lines changed

Dockerfile

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
FROM debian:9
2+
3+
# Install passenger
4+
5+
RUN apt-get update && \
6+
apt-get install -y dirmngr gnupg && \
7+
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7 && \
8+
apt-get install -y apt-transport-https ca-certificates && \
9+
sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger stretch main > /etc/apt/sources.list.d/passenger.list'
10+
11+
RUN apt-get update && \
12+
apt-get install -y passenger python-setuptools build-essential python-dev python-pip git && \
13+
pip install pip==9.0.3
14+
15+
RUN apt-get install -y libcurl4-openssl-dev libssl1.0-dev
16+
17+
ARG version
18+
19+
COPY dist/wes-service-${version}.tar.gz /root
20+
21+
RUN cd /root && tar xzf wes-service-${version}.tar.gz && \
22+
cd wes-service-${version} && \
23+
pip install .[arvados]
24+
25+
COPY passenger_wsgi.py /var/www/wes-server/passenger_wsgi.py
26+
27+
EXPOSE 443
28+
29+
WORKDIR /var/www/wes-server/
30+
RUN chown www-data:www-data -R /var/www
31+
32+
CMD ["passenger", "start", "--environment=production", "--user=www-data", "--port=443", "--ssl", \
33+
"--ssl-certificate=/etc/ssl/certs/ssl-cert-wes.pem", \
34+
"--ssl-certificate-key=/etc/ssl/private/ssl-cert-wes.key"]

MANIFEST.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
include README.pypi.rst
2+
include wes_service/openapi/workflow_execution_service.swagger.yaml

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,5 @@
4242
"arvados-cwl-runner"
4343
]
4444
},
45-
zip_safe=True
45+
zip_safe=False
4646
)

wes-docker.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/sh
2+
set -e
3+
#python setup.py sdist
4+
docker build --build-arg version=2.2 -t commonworkflowlanguage/workflow-service .
5+
docker run -ti \
6+
-v$PWD/config.yml:/var/www/wes-server/config.yml \
7+
-v/etc/ssl/certs/ssl-cert-snakeoil.pem:/etc/ssl/certs/ssl-cert-wes.pem \
8+
-v/etc/ssl/private/ssl-cert-snakeoil.key:/etc/ssl/private/ssl-cert-wes.key \
9+
-v/var/run/docker.sock:/var/run/docker.sock \
10+
commonworkflowlanguage/workflow-service

wes_service/__init__.py

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,31 @@
11
import argparse
22
import sys
3+
import ruamel.yaml
4+
import os
5+
import logging
6+
7+
logging.basicConfig(level=logging.INFO)
38

49
import connexion
510
import connexion.utils as utils
611
from connexion.resolver import Resolver
712

13+
def setup(args=None):
14+
if args is None:
15+
args = argparse.Namespace()
816

9-
def main(argv=sys.argv[1:]):
10-
parser = argparse.ArgumentParser(description='Workflow Execution Service')
11-
parser.add_argument(
12-
"--backend", type=str, default="wes_service.cwl_runner")
13-
parser.add_argument("--port", type=int, default=8080)
14-
parser.add_argument("--opt", type=str, action="append")
15-
parser.add_argument("--debug", action="store_true", default=False)
16-
args = parser.parse_args(argv)
17+
configfile = "config.yml"
18+
if os.path.isfile(configfile):
19+
logging.info("Loading %s", configfile)
20+
with open(configfile, "r") as f:
21+
config = ruamel.yaml.safe_load(f)
22+
for c in config:
23+
setattr(args, c, config[c])
24+
25+
26+
logging.info("Using config:")
27+
for n in args.__dict__:
28+
logging.info(" %s: %s", n, getattr(args, n))
1729

1830
app = connexion.App(__name__)
1931
backend = utils.get_function_from_name(
@@ -26,6 +38,20 @@ def rs(x):
2638
'openapi/workflow_execution_service.swagger.yaml',
2739
resolver=Resolver(rs))
2840

41+
return app
42+
43+
44+
def main(argv=sys.argv[1:]):
45+
parser = argparse.ArgumentParser(description='Workflow Execution Service')
46+
parser.add_argument(
47+
"--backend", type=str, default="wes_service.cwl_runner")
48+
parser.add_argument("--port", type=int, default=8080)
49+
parser.add_argument("--opt", type=str, action="append")
50+
parser.add_argument("--debug", action="store_true", default=False)
51+
args = parser.parse_args(argv)
52+
53+
app = setup(args)
54+
2955
app.run(port=args.port, debug=args.debug)
3056

3157

0 commit comments

Comments
 (0)