Skip to content

Instantly share code, notes, and snippets.

@bochsdbg
Last active March 27, 2018 18:59
Show Gist options
  • Save bochsdbg/3779848bafc8f6820f2e144e7333a6f1 to your computer and use it in GitHub Desktop.
Save bochsdbg/3779848bafc8f6820f2e144e7333a6f1 to your computer and use it in GitHub Desktop.
Test dockerfile for aicup
#!/bin/sh
if [ $# -ne 2 ]; then
cat <<HELP
Usage: $0 <sources_path> <container_name>
sources_path -- path to example source file or directory
container_name -- running container's name (to get the last started container, you can use $(docker ps -l -q))
HELP
exit 1
fi
SOURCES_PATH=$1
CONTAINER_NAME=$2
docker exec "${CONTAINER_NAME}" bash -c 'rm -rf ${SOLUTION_CODE_PATH} && mkdir -p "${SOLUTION_CODE_PATH}"'
SOLUTION_CODE_PATH=$(docker exec ${CONTAINER_NAME} printenv SOLUTION_CODE_PATH)
SOLUTION_CODE_ENTRYPOINT=$(docker exec ${CONTAINER_NAME} printenv SOLUTION_CODE_ENTRYPOINT)
if [ -d "${SOURCES_PATH}" ]; then
docker cp "${SOURCES_PATH}/." "${CONTAINER_NAME}:${SOLUTION_CODE_PATH}"
else
docker cp "${SOURCES_PATH}" "${CONTAINER_NAME}:${SOLUTION_CODE_PATH}/${SOLUTION_CODE_ENTRYPOINT}"
fi
docker exec -w /opt/client "${CONTAINER_NAME}" bash -c 'eval "${COMPILATION_COMMAND}" && eval "${RUN_COMMAND}"'
FROM ubuntu:16.04
MAINTAINER Sergey Samokhvalov <onlyforthesky@gmail.com>
# environment variables to be changed
ENV SOLUTION_CODE_ENTRYPOINT=main.cpp
ENV COMPILED_FILE_PATH=/opt/client/a.out
ENV DEFAULT_COMPILATION_COMMAND="g++ -m64 -pipe -O2 -std=c++11 -w -o $COMPILED_FILE_PATH $SOLUTION_CODE_ENTRYPOINT"
ENV DEFAULT_RUN_COMMAND="/lib64/ld-linux-x86-64.so.2 $COMPILED_FILE_PATH"
ENV DEBIAN_FRONTEND=noninteractive
# Updating and getting software
RUN apt-get update -y && \
apt-get install -y build-essential
# Cleanup and other variables rarely changed
RUN rm -rf /var/lib/apt/lists/*
ENV SOLUTION_CODE_PATH=/opt/client/solution
ENV COMPILATION_COMMAND='cd "${SOLUTION_CODE_PATH}" && if [ -f "build.sh" ]; then chmod +x build.sh && ./build.sh 2>&1 >/dev/null; else eval "${DEFAULT_COMPILATION_COMMAND}" 2>&1 >/dev/null; fi'
ENV RUN_COMMAND='cd "${SOLUTION_CODE_PATH}" && if [ -f "run.sh" ]; then chmod +x run.sh && ./run.sh; else eval "${DEFAULT_RUN_COMMAND}"; fi'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment