forked from loafle/openapi-generator-original
[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.
This commit is contained in:
parent
fe66364f04
commit
436731184d
22
Dockerfile
22
Dockerfile
@ -1,16 +1,22 @@
|
|||||||
FROM jimschubert/8-jdk-alpine-mvn:1.0
|
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
|
RUN mkdir /opt
|
||||||
|
|
||||||
ADD . /opt/swagger-codegen
|
ADD . ${GEN_DIR}
|
||||||
|
|
||||||
WORKDIR /opt/swagger-codegen
|
VOLUME ${MAVEN_HOME}/.m2/repository
|
||||||
|
|
||||||
RUN mvn -am -pl "modules/swagger-codegen-cli" package && \
|
WORKDIR ${GEN_DIR}
|
||||||
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
|
|
||||||
|
|
||||||
ENTRYPOINT ["java", "-jar", "/opt/swagger-codegen/swagger-codegen-cli.jar"]
|
RUN mvn -am -pl "modules/swagger-codegen-cli" package
|
||||||
|
|
||||||
CMD ["help"]
|
COPY docker-entrypoint.sh /usr/local/bin/
|
||||||
|
|
||||||
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
|
|
||||||
|
CMD ["build"]
|
||||||
|
24
docker-entrypoint.sh
Executable file
24
docker-entrypoint.sh
Executable file
@ -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
|
#!/bin/bash
|
||||||
set -e
|
set -exo pipefail
|
||||||
cd "$(dirname $BASH_SOURCE)"
|
|
||||||
|
|
||||||
maven_cache_repo="$HOME/.m2/repository"
|
cd "$(dirname ${BASH_SOURCE})"
|
||||||
myname="$(basename $BASH_SOURCE)"
|
|
||||||
|
|
||||||
if [ "$1" = "mvn" ]; then
|
maven_cache_repo="${HOME}/.m2/repository"
|
||||||
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
|
|
||||||
|
|
||||||
mkdir -p "$maven_cache_repo"
|
mkdir -p "${maven_cache_repo}"
|
||||||
|
|
||||||
set -x
|
docker run --rm -it \
|
||||||
|
|
||||||
docker run -it \
|
|
||||||
-w /gen \
|
-w /gen \
|
||||||
|
-e GEN_DIR=/gen \
|
||||||
-v "${PWD}:/gen" \
|
-v "${PWD}:/gen" \
|
||||||
-v "${maven_cache_repo}:/root/.m2/repository" \
|
-v "${maven_cache_repo}:/root/.m2/repository" \
|
||||||
maven:3-jdk-7 $cmd $args
|
--entrypoint /gen/docker-entrypoint.sh \
|
||||||
|
maven:3-jdk-7 "$@"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user