| # Copyright 2017 The Bazel Authors. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Script to copy a file/directory located inside a container as a tarball. |
| # Usage: |
| # ./container_file_export.sh l.gcr.io/google/python:latest /opt/python3.6 py.tar.gz |
| # In order to use this script, you need to have docker installed, see |
| # https://docs.docker.com/engine/installation/ |
| # |
| # Noted: this script is only meant to be used directly by the corresponding |
| # container_file_export skylark rule. |
| |
| #!/usr/bin/env bash |
| |
| set -e |
| |
| main() { |
| if [ "$#" -ne 3 ]; then |
| echo "Illegal number of parameters: ./container_cp.sh <DOCKER_IMAGE> <SOURCE_PATH> <TARGET_TARALL_FILE>" |
| fi |
| |
| IMAGE=$1 |
| SOURCE=$2 |
| TARGET=$3 |
| |
| container_name="data-container-$RANDOM" |
| docker run -t -d --name ${container_name} $IMAGE sleep infinity |
| docker exec -e GZIP=-n ${container_name} tar -czf /tmp/data.tar.gz --mtime='1970-01-01' $SOURCE |
| docker cp ${container_name}:/tmp/data.tar.gz $TARGET |
| docker rm -f ${container_name} |
| } |
| |
| main $@ |