Permalink
Please sign in to comment.
Browse files
[docker] Update root Dockerfile and run-in-docker
This update allows the root Dockerfile to be used as a development container and updates run-in-docker.sh to use the same entrypoint script while maintaining backward compatibility for anyone who has scripted mappings to /gen and /root/.m2/repository.
- Loading branch information...
Showing
with
46 additions
and 34 deletions.
- +14 −8 Dockerfile
- +24 −0 docker-entrypoint.sh
- +8 −26 run-in-docker.sh
22
Dockerfile
| @@ -1,16 +1,22 @@ | ||
| FROM jimschubert/8-jdk-alpine-mvn:1.0 | ||
| +ENV GEN_DIR /opt/swagger-codegen | ||
| + | ||
| +RUN set -x && \ | ||
| + apk add --no-cache bash | ||
| + | ||
| RUN mkdir /opt | ||
| -ADD . /opt/swagger-codegen | ||
| +ADD . ${GEN_DIR} | ||
| + | ||
| +VOLUME ${MAVEN_HOME}/.m2/repository | ||
| + | ||
| +WORKDIR ${GEN_DIR} | ||
| -WORKDIR /opt/swagger-codegen | ||
| +RUN mvn -am -pl "modules/swagger-codegen-cli" package | ||
| -RUN mvn -am -pl "modules/swagger-codegen-cli" package && \ | ||
| - mv /opt/swagger-codegen/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar /opt/swagger-codegen/swagger-codegen-cli.jar && \ | ||
| - mvn clean && \ | ||
| - rm -rf ${MAVEN_HOME}/.m2/repository | ||
| +COPY docker-entrypoint.sh /usr/local/bin/ | ||
| -ENTRYPOINT ["java", "-jar", "/opt/swagger-codegen/swagger-codegen-cli.jar"] | ||
| +ENTRYPOINT ["docker-entrypoint.sh"] | ||
| -CMD ["help"] | ||
| +CMD ["build"] |
| @@ -0,0 +1,24 @@ | ||
| +#!/usr/bin/env bash | ||
| + | ||
| +set -euo pipefail | ||
| + | ||
| +# GEN_DIR allows to share the entrypoint between Dockerfile and run-in-docker.sh (backward compatible) | ||
| +GEN_DIR=${GEN_DIR:-/opt/swagger-codegen} | ||
| +JAVA_OPTS=${JAVA_OPTS:-"-Xmx1024M -DloggerPath=conf/log4j.properties"} | ||
| + | ||
| +codegen="${GEN_DIR}/modules/swagger-codegen-cli/target/swagger-codegen-cli.jar" | ||
| + | ||
| +case "$1" in | ||
| + generate|help|langs|meta|config-help) | ||
| + # If ${GEN_DIR} has been mapped elsewhere from default, and that location has not been built | ||
| + if [[ ! -f "${codegen}" ]]; then | ||
| + (cd ${GEN_DIR} && exec mvn -am -pl "modules/swagger-codegen-cli" package) | ||
| + fi | ||
| + command=$1 | ||
| + shift | ||
| + exec java ${JAVA_OPTS} -jar ${codegen} ${command} "$@" | ||
| + ;; | ||
| + *) # Any other commands, e.g. docker run imagename ls -la or docker run -it imagename /bin/bash | ||
| + exec "$@" | ||
| + ;; | ||
| +esac |
| @@ -1,34 +1,16 @@ | ||
| #!/bin/bash | ||
| -set -e | ||
| -cd "$(dirname $BASH_SOURCE)" | ||
| +set -exo pipefail | ||
| -maven_cache_repo="$HOME/.m2/repository" | ||
| -myname="$(basename $BASH_SOURCE)" | ||
| +cd "$(dirname ${BASH_SOURCE})" | ||
| -if [ "$1" = "mvn" ]; then | ||
| - cmd="$1" | ||
| - shift | ||
| - args="$@" | ||
| -else | ||
| - jar="modules/swagger-codegen-cli/target/swagger-codegen-cli.jar" | ||
| - | ||
| - # Check if project is built | ||
| - if [ ! -f "$jar" ]; then | ||
| - echo "ERROR File not found: $jar" | ||
| - echo "ERROR Did you forget to './$myname mvn package'?" | ||
| - exit 1 | ||
| - fi | ||
| - | ||
| - cmd="java -jar /gen/$jar" | ||
| - args="$@" | ||
| -fi | ||
| +maven_cache_repo="${HOME}/.m2/repository" | ||
| -mkdir -p "$maven_cache_repo" | ||
| +mkdir -p "${maven_cache_repo}" | ||
| -set -x | ||
| - | ||
| -docker run -it \ | ||
| +docker run --rm -it \ | ||
| -w /gen \ | ||
| + -e GEN_DIR=/gen \ | ||
| -v "${PWD}:/gen" \ | ||
| -v "${maven_cache_repo}:/root/.m2/repository" \ | ||
| - maven:3-jdk-7 $cmd $args | ||
| + --entrypoint /gen/docker-entrypoint.sh \ | ||
| + maven:3-jdk-7 "$@" |
0 comments on commit
4367311