diff --git a/.gitignore b/.gitignore index a1b4284..21eb53f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ -/input/ -/output/ +/runtime/ /dependencies/ -examples # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/.init-container.sh b/.init-container.sh index 005716d..acff572 100755 --- a/.init-container.sh +++ b/.init-container.sh @@ -1,10 +1,7 @@ #!/bin/bash -echo 'export PATH="$EOA_SCRIPTS_DIR:$PATH"' >> ~/.bashrc - -ln -s $INPUT_DIR input -ln -s $OUTPUT_DIR output +echo 'export PATH="$EOA_SCRIPTS_DIR:$PATH"' > ./.bashrc # wait, keep container running: bash -c 'while :; do :; done & kill -STOP $! && wait $!' diff --git a/Dockerfile b/Dockerfile index fef6597..a070e1c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -104,12 +104,5 @@ RUN echo '#!/bin/bash' > $UTILS_BIN_DIR/saxon RUN echo 'java -jar $UTILS_BIN_DIR/saxon9he.jar "$@"' >> $UTILS_BIN_DIR/saxon RUN chmod ugo+x $UTILS_BIN_DIR/saxon -# create a HOME and reasonable environment settings for the user: -ENV HOME /home/user -RUN useradd --create-home user -WORKDIR ${HOME} - -COPY ".init-container.sh" "$HOME/init_container.sh" -RUN chmod ugo+x "$HOME/init_container.sh" - -USER user +COPY ".init-container.sh" "$UTILS_BIN_DIR/init_container.sh" +RUN chmod ugo+x "$UTILS_BIN_DIR/init_container.sh" diff --git a/docker-compose.yaml b/docker-compose.yaml index 3ebf31f..5d9b0a8 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -6,16 +6,19 @@ services: build: . image: ${IMAGE_NAME} container_name: ${CONTAINER_NAME} - command: "/home/user/init_container.sh" + command: "/eoa/bin/init_container.sh" volumes: - ./${SRC_DIR}:${SRC_DIR_IN_CONTAINER} + - ./${HOME_DIR}:${HOME_DIR_IN_CONTAINER} - ./${INPUT_DIR}:${INPUT_DIR_IN_CONTAINER} - ./${OUTPUT_DIR}:${OUTPUT_DIR_IN_CONTAINER} environment: + - HOME=${HOME_DIR_IN_CONTAINER} - INPUT_DIR=${INPUT_DIR_IN_CONTAINER} - OUTPUT_DIR=${OUTPUT_DIR_IN_CONTAINER} - DEPENDENCIES_DIR=${DEPENDENCIES_DIR_IN_CONTAINER} - EOA_SCRIPTS_DIR=${SRC_DIR_IN_CONTAINER} ports: [] user: ${USER}:${GROUP} + working_dir: ${HOME_DIR_IN_CONTAINER} tty: true diff --git a/scripts/config/env.conf b/scripts/config/env.conf index a31514c..b9bcfe0 100644 --- a/scripts/config/env.conf +++ b/scripts/config/env.conf @@ -15,15 +15,18 @@ CONTAINER_NAME=eoa_skripts SRC_DIR=src SRC_DIR_IN_CONTAINER=/eoa/skripts -INPUT_DIR=input +DEPENDENCIES_DIR=dependencies +DEPENDENCIES_DIR_IN_CONTAINER=/eoa/dependencies + +HOME_DIR=runtime/work_dir +HOME_DIR_IN_CONTAINER=/home/work_dir + +INPUT_DIR=runtime/input INPUT_DIR_IN_CONTAINER=/eoa/input -OUTPUT_DIR=output +OUTPUT_DIR=runtime/output OUTPUT_DIR_IN_CONTAINER=/eoa/output -DEPENDENCIES_DIR=dependencies -DEPENDENCIES_DIR_IN_CONTAINER=/eoa/dependencies - ################################################### # user and group: # USER=$(id -u) diff --git a/scripts/init.py b/scripts/init.py index 6d15b1f..d20d282 100755 --- a/scripts/init.py +++ b/scripts/init.py @@ -37,12 +37,27 @@ def create_dirs( config ): create_dir( BASE_DIR / config['DEPENDENCIES_DIR'] ) + create_dir( + BASE_DIR / config['HOME_DIR'] + ) create_dir( BASE_DIR / config['INPUT_DIR'] ) create_dir( BASE_DIR / config['OUTPUT_DIR'] ) + in_link = Path(BASE_DIR / config['HOME_DIR'] / 'input' ) + if not(in_link.is_symlink()) and not(in_link.exists()): + in_link . symlink_to( + config['INPUT_DIR_IN_CONTAINER'], + target_is_directory = True, + ) + out_link = Path(BASE_DIR / config['HOME_DIR'] / 'output' ) + if not(out_link.is_symlink()) and not(out_link.exists()): + out_link . symlink_to( + config['OUTPUT_DIR_IN_CONTAINER'], + target_is_directory = True, + ) def install_git_dep( repo_name, @@ -126,7 +141,7 @@ def install_git_dep( env = config, ) - # copy example publication to $INPUT_DIR + # copy example publication to $INPUT_DIR: copy_dir( BASE_DIR / config['DEPENDENCIES_DIR'] / 'eoa-publication-model/examples', BASE_DIR / config['INPUT_DIR'] / 'example'