protoc-artifacts: Use ENTRYPOINT to enable devtoolset-1.1 ENTRYPOINT is used even when other commands are specified on the "docker run" command line. This allows running one-off commands in the docker image (especially combined with volume binding with the host) with the correct environment variables.
diff --git a/protoc-artifacts/Dockerfile b/protoc-artifacts/Dockerfile index 2644693..c346586 100644 --- a/protoc-artifacts/Dockerfile +++ b/protoc-artifacts/Dockerfile
@@ -39,5 +39,7 @@ devtoolset-1.1-libstdc++-devel.i686 && \ yum clean all +COPY scl-enable-devtoolset.sh /var/local/ + # Start in devtoolset environment that uses GCC 4.7 -CMD ["scl", "enable", "devtoolset-1.1", "bash"] +ENTRYPOINT ["/var/local/scl-enable-devtoolset.sh"]
diff --git a/protoc-artifacts/README.md b/protoc-artifacts/README.md index d11cde5..dcaec98 100644 --- a/protoc-artifacts/README.md +++ b/protoc-artifacts/README.md
@@ -140,7 +140,7 @@ To run the image: ``` -$ docker run -it --rm=true protoc-artifacts +$ docker run -it --rm=true protoc-artifacts bash ``` To checkout protobuf (run within the container):
diff --git a/protoc-artifacts/scl-enable-devtoolset.sh b/protoc-artifacts/scl-enable-devtoolset.sh new file mode 100755 index 0000000..8d9585e --- /dev/null +++ b/protoc-artifacts/scl-enable-devtoolset.sh
@@ -0,0 +1,13 @@ +#!/bin/bash +set -eu -o pipefail + +quote() { + local arg + for arg in "$@"; do + printf "'" + printf "%s" "$arg" | sed -e "s/'/'\\\\''/g" + printf "' " + done +} + +exec scl enable devtoolset-1.1 "$(quote "$@")"