-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathdocker_build
executable file
·97 lines (84 loc) · 3.28 KB
/
docker_build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/bash
set -x
DEFAULT_ENV_FILE="$(pwd)/.env"
ENV_FILE=${1:-$DEFAULT_ENV_FILE}
echo "env: ${ENV_FILE}"
if [ -f "${ENV_FILE}" ]; then
source ${ENV_FILE}
fi
KEYS_DIR="$(pwd)/keys"
mkdir -p ${KEYS_DIR}
if [ "${CREATE_KEY_PAIR}" == "true" ]; then
ssh-keygen -f ${KEYS_DIR}/id_ecdsa -t ed25519 -C "${SSH_USER}@cloud-run-ssh"
cat ${KEYS_DIR}/id_ecdsa
else
touch ${KEYS_DIR}/id_fake
touch ${KEYS_DIR}/id_fake.pub
fi
cat ${KEYS_DIR}/*.pub > ${KEYS_DIR}/authorized_keys
cat -n ${KEYS_DIR}/authorized_keys
DOCKER_LOCAL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
DOCKER_REMOTE_IMAGE="${IMAGE_URI_BASE}/${DOCKER_LOCAL_IMAGE}"
if [ "${CONTENT_FLAVOR}" = "app" ]; then
APP_IMAGE_URI="${2}"
if [[ -z "${APP_IMAGE_URI}" ]]; then
echo "missing APP container image URI"
exit 1
fi
rm -rf ./tmp
mkdir -pv ./tmp/app
docker create --name=app_container "${APP_IMAGE_URI}"
docker export --output='tmp/app/app_container.tar' app_container
cd tmp/app/ && tar -xf app_container.tar && rm app_container.tar
cd - && docker kill app_container && docker rm app_container
docker image inspect --format=json "${APP_IMAGE_URI}" \
| jq -M '.[0]' > ./tmp/app.json
docker image inspect --format=json "${APP_IMAGE_URI}" \
| jq -cMr '.[0].Config.Env[]' \
| xargs -I% echo -e 'export %' > ./tmp/start_app
docker image inspect --format=json "${APP_IMAGE_URI}" \
| jq -cMr '.[0].Config.WorkingDir' \
| xargs -I% echo -e '\ncd %' >> ./tmp/start_app
docker image inspect --format=json "${APP_IMAGE_URI}" \
| jq -cMr '.[0].Config | (.Entrypoint // .Cmd) | join(" ")' \
| xargs -I% echo -e '\n%' >> ./tmp/start_app
chmod +x ./tmp/start_app
cat -n ./tmp/start_app
fi
docker buildx build \
--platform=linux/amd64 \
--file=$(pwd)/Dockerfile.${IMAGE_TAG} \
--tag=${DOCKER_LOCAL_IMAGE} \
--build-arg="CONTENT_FLAVOR=${CONTENT_FLAVOR}" \
--build-arg="SSH_SERVER_VERSION=${SSH_SERVER_VERSION}" \
--build-arg="GCSFUSE_VERSION=${GCSFUSE_VERSION}" \
--build-arg="CLOUDSDK_VERSION=${CLOUDSDK_VERSION}" \
--build-arg="CSQL_PROXY_VERSION=${CSQL_PROXY_VERSION}" \
--build-arg="ALLOYDB_PROXY_VERSION=${ALLOYDB_PROXY_VERSION}" \
--build-arg="USQL_VERSION=${USQL_VERSION}" \
--build-arg="GOST_VERSION=${GOST_VERSION}" \
--build-arg="YQ_VERSION=${YQ_VERSION}" \
--build-arg="DOCKER_VERSION=${DOCKER_VERSION}" \
--build-arg="GCREDS_HELPER_VERSION=${GCREDS_HELPER_VERSION}" \
--build-arg="VSCODE_VERSION=${VSCODE_VERSION}" \
--label="CONTENT_FLAVOR=v${CONTENT_FLAVOR}" \
--label="ACCESS_LEVEL=v${ACCESS_LEVEL}" \
--label="SSH_SERVER_VERSION=v${SSH_SERVER_VERSION}" \
--label="GCSFUSE_VERSION=v${GCSFUSE_VERSION}" \
--label="CLOUDSDK_VERSION=v${CLOUDSDK_VERSION}" \
--label="CSQL_PROXY_VERSION=v${CSQL_PROXY_VERSION}" \
--label="ALLOYDB_PROXY_VERSION=v${ALLOYDB_PROXY_VERSION}" \
--label="USQL_VERSION=v${USQL_VERSION}" \
--label="GOST_VERSION=${GOST_VERSION}" \
--label="YQ_VERSION=${YQ_VERSION}" \
--build-arg="SSH_USER=${SSH_USER}" \
--build-arg="SSH_PASS=${SSH_PASS}" \
--build-arg="WEB_PORT=${WEB_PORT}" \
--build-arg="PASSWORD_ACCESS=${PASSWORD_ACCESS}" \
--build-arg="SUDO_ACCESS=${SUDO_ACCESS}" \
--progress=plain $(pwd)
if [ "${CONTENT_FLAVOR}" = "app" ]; then
rm -rf ./tmp
fi
docker tag ${DOCKER_LOCAL_IMAGE} ${DOCKER_REMOTE_IMAGE}
docker push ${DOCKER_REMOTE_IMAGE}