From c5ce5b1c877ec7ed8c4f34366ad64c8990f935e8 Mon Sep 17 00:00:00 2001
From: Patrick Jentsch
Date: Mon, 3 Jun 2019 13:32:37 +0200
Subject: [PATCH] Update for unprivileged usage 2
---
README.md | 1 +
wrapper/nlp | 25 ++++++++++++++++---------
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index bbf22f1..2d93378 100644
--- a/README.md
+++ b/README.md
@@ -44,6 +44,7 @@ mkdir -p //files_for_nlp //files_from_nlp
docker run \
--rm \
-it \
+ -u $(id -u $USER):$(id -g $USER) \
-v //files_for_nlp:/input \
-v //files_from_nlp:/output \
sfb1288inf/nlp:latest \
diff --git a/wrapper/nlp b/wrapper/nlp
index 263d330..3d72579 100755
--- a/wrapper/nlp
+++ b/wrapper/nlp
@@ -2,9 +2,14 @@
# coding=utf-8
import argparse
+import os
import subprocess
container_image = 'gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/nlp:latest'
+container_input_dir = '/input'
+container_output_dir = '/output'
+uid = str(os.getuid())
+gid = str(os.getgid())
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument(
@@ -17,16 +22,18 @@ parser.add_argument(
dest='output_dir',
required=True
)
-dirs, args = parser.parse_known_args()
+args, remaining_args = parser.parse_known_args()
-cmd = ['docker', 'run', '--rm', '-it']
-if dirs.input_dir is not None:
- cmd += ['-v', dirs.input_dir + ':/input']
- args += ['-i', '/input']
-if dirs.output_dir is not None:
- cmd += ['-v', dirs.output_dir + ':/output']
- args += ['-o', '/output']
+cmd = ['docker', 'run', '--rm', '-it', '-u', uid + ':' + gid]
+if args.input_dir is not None:
+ host_input_dir = os.path.abspath(args.input_dir)
+ cmd += ['-v', host_input_dir + ':' + container_input_dir]
+ remaining_args += ['-i', '/input']
+if args.output_dir is not None:
+ host_output_dir = os.path.abspath(args.output_dir)
+ cmd += ['-v', host_output_dir + ':' + container_output_dir]
+ remaining_args += ['-o', '/output']
cmd.append(container_image)
-cmd += args
+cmd += remaining_args
subprocess.run(cmd)