File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2,6 +2,11 @@ services:
22 todo-service-name :
33 build :
44 dockerfile : ./docker/${IMAGE_TAG}/Dockerfile
5+ args :
6+ BASE_IMAGE : ${BASE_IMAGE}
7+ IMAGE_USER : ${IMAGE_USER}
8+ HOME_FOLDER : ${HOME_FOLDER}
9+ TIME_ZONE : ${TIME_ZONE}
510 x-bake :
611 contexts :
712 home-folder-config : ./docker/build-context/home-folder-config
Original file line number Diff line number Diff line change 11# Do not add --platform=linux/blabla since this is intended for multiplatform builds
2+ ARG BASE_IMAGE=ubuntu
23FROM ${BASE_IMAGE}
4+
5+ ARG IMAGE_USER
6+ ARG HOME_FOLDER
7+ ARG TIME_ZONE
8+
39ENV HOME=${HOME_FOLDER}
410WORKDIR ${HOME_FOLDER}/
511
@@ -106,7 +112,7 @@ RUN wget "https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-$(uname -m
106112 rm ~/miniconda.sh
107113
108114# Add conda to PATH
109- ENV PATH=${PATH}: /opt/conda/bin
115+ ENV PATH=/opt/conda/bin:${PATH}
110116
111117# Init conda for zsh
112118RUN conda init zsh
Original file line number Diff line number Diff line change 1010
1111set -euo pipefail
1212
13- before_env=" $( mktemp) "
14- after_env=" $( mktemp) "
15- tmp_dockerfile=" $( mktemp) "
16- cleanup () { rm -f " ${before_env} " " ${after_env} " " ${tmp_dockerfile} " ; }
17- trap cleanup EXIT
18-
19- env | sort > " ${before_env} "
20-
2113set -a
2214. " $( dirname " $0 " ) " /variables.sh
2315set +a
2416
25- env | sort > " ${after_env} "
26-
27- diff_env=" $(
28- awk -F= '
29- NR==FNR { before[$1]=$0; next }
30- {
31- name=$1
32- if (!(name in before) || before[name] != $0)
33- printf " ${%s}", name
34- }
35- ' " ${before_env} " " ${after_env} "
36- ) "
37- diff_env=" ${diff_env# } " # trim leading space
38-
3917# Determine the local platform
4018if [[ " $( uname -m) " == " x86_64" ]]; then
4119 LOCAL_PLATFORM=" linux/amd64"
5836 docker buildx use " ${BUILDER} "
5937fi
6038
61- # environment variable substitution trick
62- envsubst " ${diff_env} " < " $( dirname " $0 " ) /../docker/${IMAGE_TAG} /Dockerfile" > " ${tmp_dockerfile} "
63-
64- echo " >>> Substituted dockerfile:"
65- echo " ----------------------------------------"
66- cat " ${tmp_dockerfile} "
67- echo " ----------------------------------------"
68-
6939# Build the Docker image for only the local platform, push.sh will push multi-platform version
70- docker buildx bake --file " $( dirname " $0 " ) " /../docker-compose.yml --load --set " *.platform=${LOCAL_PLATFORM} " --set " *.dockerfile= ${tmp_dockerfile} "
40+ docker buildx bake --file " $( dirname " $0 " ) " /../docker-compose.yml --load --set " *.platform=${LOCAL_PLATFORM} "
Original file line number Diff line number Diff line change 1010
1111set -euo pipefail
1212
13- before_env=" $( mktemp) "
14- after_env=" $( mktemp) "
15- tmp_def=" $( mktemp) "
16- cleanup () { rm -f " ${before_env} " " ${after_env} " " ${tmp_def} " ; }
17- trap cleanup EXIT
18-
19- env | sort > " ${before_env} "
20-
2113set -a
2214. " $( dirname " $0 " ) " /variables.sh
2315set +a
2416
25- after_env=" $( mktemp) "
26- trap ' rm -f "$after_env"' RETURN
27- env | sort > " ${after_env} "
28-
29- diff_env=" $(
30- awk -F= '
31- NR==FNR { before[$1]=$0; next }
32- {
33- name=$1
34- if (!(name in before) || before[name] != $0)
35- printf " ${%s}", name
36- }
37- ' " ${before_env} " " ${after_env} "
38- ) "
39- diff_env=" ${diff_env# } " # trim leading space
40-
41- envsubst " ${diff_env} " < " $( dirname " $0 " ) /../singularity/default.def" > " ${tmp_def} "
42-
43- echo " >>> Substituted def file:"
44- echo " ----------------------------------------"
45- cat " ${tmp_def} "
46- echo " ----------------------------------------"
47-
4817singularity build \
4918 --fix-perms \
19+ --build-arg-file " $( dirname " $0 " ) /../.env" \
5020 " $( dirname " $0 " ) /../${IMAGE_NAME} _${IMAGE_TAG} .sif" \
51- " ${tmp_def} "
21+ " $( dirname " $0 " ) /../singularity/default.def "
Original file line number Diff line number Diff line change 1010
1111set -euo pipefail
1212
13- before_env=" $( mktemp) "
14- after_env=" $( mktemp) "
15- tmp_dockerfile=" $( mktemp) "
16- cleanup () { rm -f " ${before_env} " " ${after_env} " " ${tmp_dockerfile} " ; }
17- trap cleanup EXIT
18-
19- env | sort > " ${before_env} "
20-
2113set -a
2214. " $( dirname " $0 " ) " /variables.sh
2315set +a
2416
25- env | sort > " ${after_env} "
26-
27- diff_env=" $(
28- awk -F= '
29- NR==FNR { before[$1]=$0; next }
30- {
31- name=$1
32- if (!(name in before) || before[name] != $0)
33- printf " ${%s}", name
34- }
35- ' " ${before_env} " " ${after_env} "
36- ) "
37- diff_env=" ${diff_env# } " # trim leading space
38-
3917# Check if the builder already exists
4018if ! docker buildx inspect " ${BUILDER} " & > /dev/null; then
4119 echo " Creating Docker Buildx builder '${BUILDER} '..."
4826 docker buildx use " ${BUILDER} "
4927fi
5028
51- # environment variable substitution trick
52- envsubst " ${diff_env} " < " $( dirname " $0 " ) /../docker/${IMAGE_TAG} /Dockerfile" > " ${tmp_dockerfile} "
53-
54- echo " >>> Substituted dockerfile:"
55- echo " ----------------------------------------"
56- cat " ${tmp_dockerfile} "
57- echo " ----------------------------------------"
58-
5929# docker push "${DOCKER_USER}"/"${IMAGE_NAME}":"${IMAGE_TAG}"
6030
61- docker buildx bake --file " $( dirname " $0 " ) " /../docker-compose.yml --push --set " *.dockerfile= ${tmp_dockerfile} "
31+ docker buildx bake --file " $( dirname " $0 " ) " /../docker-compose.yml --push
Original file line number Diff line number Diff line change 11Bootstrap: docker
2- From: ${ DOCKER_USER}/${ IMAGE_NAME}:${ IMAGE_TAG}
2+ From: {{ DOCKER_USER}}/{{ IMAGE_NAME}}:{{ IMAGE_TAG} }
33
44%labels
5- Image ${ IMAGE_NAME}:${ IMAGE_TAG}
6- Source docker://${ DOCKER_USER}/${ IMAGE_NAME}:${ IMAGE_TAG}
5+ Image {{ IMAGE_NAME}}:{{ IMAGE_TAG} }
6+ Source docker://{{ DOCKER_USER}}/{{ IMAGE_NAME}}:{{ IMAGE_TAG} }
77
88%environment
9- # ---- Runtime env (applies inside the container at exec/start) ----
10- export HOME="${HOME_FOLDER}"
11- export DEBIAN_FRONTEND=noninteractive
9+ # ---- Runtime env (applies inside the instance at start/exec) ----
10+ export HOME={{HOME_FOLDER}}
1211
1312%runscript
14- # Default behavior: pass through to the invoked command
15- exec "$@"
13+ # works only when starting with 'singularity run ...'
14+ # Source zshrc if it exists
15+ [ -f ~/.zshrc ] && source ~/.zshrc
16+
17+ cd "{{HOME_FOLDER}}/{{CODE_FOLDER}}" 2>/dev/null || cd "{{HOME_FOLDER}}" || true
1618
17- %startscript
18- # When `instance start` runs, ensure HOME is correct and cd to project if present
19- export HOME="${HOME_FOLDER}"
20- cd "${HOME_FOLDER}/${CODE_FOLDER}" 2>/dev/null || cd "${HOME_FOLDER}" || true
2119 exec "$@"
You can’t perform that action at this time.
0 commit comments