Skip to content

Instantly share code, notes, and snippets.

@tcfuji
Forked from proppy/Dockerfile
Created March 28, 2014 12:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tcfuji/9831904 to your computer and use it in GitHub Desktop.
Save tcfuji/9831904 to your computer and use it in GitHub Desktop.
FROM google/cloud-sdk
RUN apt-get update && apt-get install -y --no-install-recommends curl sshpass netcat-traditional
RUN curl https://get.docker.io/builds/Linux/x86_64/docker-latest -o /bin/docker && chmod +x /bin/docker
RUN curl http://stedolan.github.io/jq/download/linux64/jq -o /bin/jq && chmod +x /bin/jq
ADD gce2docker-fork.sh /
EXPOSE 44243
ENV DOCKER_HOST :44243
ENTRYPOINT ["/gce2docker-fork.sh"]
#!/bin/bash
set -ex
GS_ROOT=gs://proppy-docker/debian2docker-1395924258.tar.gz
ROOT_IMAGE=$(echo ${GS_ROOT} | sed -e 's/gs:\/\/.*\/\(.*\)\.tar\.gz/\1/')
DATE=$(date +%s)
INSTANCE=d2d-vm-${DATE}
DISK=d2d-data-${DATE}
DISK_SNAPSHOT=d2d-data-snapshot
PORT=${PORT:-4243}
ZONE=us-central1-a
MACHINE=machineTypes/f1-micro
gcutil adddisk ${DISK} --size=200 --zone=${ZONE} --source_snapshot=${DISK_SNAPSHOT}
gcutil addinstance ${INSTANCE} --zone=${ZONE} --image=${ROOT_IMAGE} --machine_type=${MACHINE} --disk=${DISK} --service_account_scopes=https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/compute
IP=$(gcutil getinstance --format=json ${INSTANCE} | jq -r .networkInterfaces[].accessConfigs[].natIP)
while !(echo | nc -w 1 ${IP} 22 | grep SSH); do
echo "connection refused"
done
echo "connection ok"
sshpass -p live ssh -oStrictHostKeyChecking=no -f -N -L ${PORT}:127.0.0.1:4243 docker@${IP}
docker -H :${PORT} version
#!/bin/bash
set -ex
GS_ROOT=gs://proppy-docker/debian2docker-1395924258.tar.gz
ROOT_IMAGE=$(echo ${GS_ROOT} | sed -e 's/gs:\/\/.*\/\(.*\)\.tar\.gz/\1/')
DATE=$(date +%s)
INSTANCE=d2d-vm-${DATE}
DISK=d2d-data-${DATE}
DISK_SNAPSHOT=d2d-data-snapshot
ZONE=us-central1-a
MACHINE=machineTypes/f1-micro
SRC_DISK=${SRC_DISK:-$(curl -H 'X-Google-Metadata-Request: true' http://metadata/computeMetadata/v1/instance/disks/1/device-name)}
gcutil addsnapshot ${DISK_SNAPSHOT} --zone=${ZONE} --source_disk=${SRC_DISK} --wait_until_complete || true
gcutil adddisk ${DISK} --size=200 --zone=${ZONE} --source_snapshot=${DISK_SNAPSHOT}
gcutil addinstance ${INSTANCE} --zone=${ZONE} --image=${ROOT_IMAGE} --machine_type=${MACHINE} --disk=${DISK} --permit_root_ssh --noadd_compute_key_to_project --service_account_scopes=https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/compute
IP=$(gcutil getinstance --format=json ${INSTANCE} | jq -r .networkInterfaces[].accessConfigs[].natIP)
while !(echo | nc -w 1 ${IP} 22 | grep SSH); do
echo "connection refused"
done
echo "connection ok"
ssh -oStrictHostKeyChecking=no -f -N -L 0.0.0.0:44243:127.0.0.1:4243 docker@${IP}
$@
sleep infinity
#!/bin/bash
set -ex
GS_ROOT=gs://proppy-docker/debian2docker-1395924258.tar.gz
GS_DISK=gs://proppy-docker/debian2docker-disk.tar.gz
ROOT_IMAGE=$(echo ${GS_ROOT} | sed -e 's/gs:\/\/.*\/\(.*\)\.tar\.gz/\1/')
DISK_IMAGE=$(echo ${GS_DISK} | sed -e 's/gs:\/\/.*\/\(.*\)\.tar\.gz/\1/')
DATE=$(date +%s)
INSTANCE=d2d-vm-${DATE}
DISK=d2d-data-${DATE}
DISK_SNAPSHOT=d2d-data-snapshot
ZONE=us-central1-a
MACHINE=machineTypes/f1-micro
gcutil addimage ${ROOT_IMAGE} ${GS_ROOT} || true
gcutil addimage ${DISK_IMAGE} ${GS_DISK} || true
gcutil adddisk ${DISK} --size=200 --zone=${ZONE} --source_image=${DISK_IMAGE}
gcutil addinstance ${INSTANCE} --zone=${ZONE} --image=${ROOT_IMAGE} --machine_type=${MACHINE} --disk=${DISK} --service_account_scopes=https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/compute
IP=$(gcutil getinstance --format=json ${INSTANCE} | jq -r .networkInterfaces[].accessConfigs[].natIP)
while !(echo | nc -w 1 ${IP} 22 | grep SSH); do
echo "connection refused"
done
echo "connection ok"
gcutil addsnapshot ${DISK_SNAPSHOT} --zone=${ZONE} --source_disk=${DISK} --wait
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment