44set dotenv-load
55
66# set env var
7- export APP := " compose_image_name"
7+ export APP := ` echo ${APP_NAME} `
88export CPU := " 2"
9- export IMAGE := ` echo ${REGISTRY_URL } `
9+ export IMAGE := ` echo ${IMAGE } `
1010export MEM := " 2048"
1111export NS := " default"
1212export PROF := " minikube"
1313export SHELL := " /bin/bash"
14+ export SCRIPT := " harden"
15+ export SHELL := " /bin/bash"
16+ export TAG := ` echo ${TAG} `
1417VERSION := ` cat VERSION `
1518
1619# x86_64/arm64
@@ -23,6 +26,7 @@ host := `uname -n`
2326default :
2427 just --list
2528
29+ # TODO: setup tilt
2630# [devspace] start minikube + devspace
2731start-devspace :
2832 #!/usr/bin/env bash
@@ -39,74 +43,110 @@ start-devspace:
3943stop-devspace :
4044 minikube stop -p {{ PROF}}
4145
42- # [docker] build locally
43- build :
44- #!/usr/bin/env bash
45- # set -euxo pipefail
46+ # docker-compose / docker compose
47+ # * https://docs.docker.com/compose/install/linux/#install-using-the-repository
48+ docker-compose := if ` command -v docker-compose; echo $? ` == " 0" {
49+ " docker-compose"
50+ } else {
51+ " docker compose"
52+ }
4653
47- echo " building ${APP_NAME}:${TAG}"
54+ # [halp] list available commands
55+ default :
56+ just --list
4857
49- if [[ {{ arch }} == " arm64" ]]; then
50- docker build -f Dockerfile -t ${APP_NAME}:${TAG} --build-arg CHIPSET_ARCH=aarch64 -linux-gnu .
58+ # [check] lint sh script
59+ checkbash :
60+ #!/usr/bin/env bash
61+ checkbashisms {{ SCRIPT}}
62+ if [[ $? -eq 1 ]]; then
63+ echo " bashisms found. Exiting..."
64+ exit 1
5165 else
52- docker build -f Dockerfile -t ${APP_NAME}:${TAG} --build-arg CHIPSET_ARCH=x8 6 _6 4 -linux-gnu .
66+ echo " No bashisms found"
5367 fi
5468
55- echo " created tag ${APP_NAME}:${TAG} {{ IMAGE}} /${APP_NAME}:${TAG}"
56-
57- # [docker] intel build
58- buildx :
59- docker buildx build -f Dockerfile --progress=plain -t ${TAG} --build-arg CHIPSET_ARCH=x86 _64 -linux-gnu --load .
60-
61- # [docker] build w/docker-compose defaults
62- build-nc :
69+ # [docker] build locally or on intel box
70+ build : checkbash
6371 #!/usr/bin/env bash
64- # set -euxo pipefail
72+ set -euxo pipefail
73+ if [[ {{ arch }} == " arm64" ]]; then
74+ docker build -f Dockerfile -t {{ APP}} --build-arg CHIPSET_ARCH=aarch64 -linux-gnu .
75+ else
76+ docker build -f Dockerfile --progress=plain -t {{ APP}} .
77+ fi
6578
79+ # [docker] arm build w/docker-compose defaults
80+ build-clean : checkbash
81+ #!/usr/bin/env bash
82+ set -euxo pipefail
6683 if [[ {{ arch }} == " arm64" ]]; then
67- docker-compose build --pull --no-cache --build-arg CHIPSET_ARCH=aarch64 -linux-gnu
84+ {{ docker-compose}} build --pull --no-cache --build-arg CHIPSET_ARCH=aarch64 -linux-gnu --parallel
6885 else
69- docker-compose build --pull --no-cache --build-arg CHIPSET_ARCH=x8 6 _6 4 -linux-gnu
86+ {{ docker-compose}} build --pull --no-cache --parallel
7087 fi
7188
72- # [docker] pull latest image
73- pull :
74- docker pull {{ IMAGE}} / ${APP_NAME}:${TAG}
89+ # [docker] login to registry (exit code 127 == 0)
90+ login :
91+ #!/usr/bin/env bash
92+ # set -euxo pipefail
93+ echo " Log into ${REGISTRY_URL} as ${USER_NAME}. Please enter your password: "
94+ cmd=$(docker login --username ${USER_NAME} ${REGISTRY_URL})
95+ if [[ $(" $cmd" >/ dev/ null 2 >&1 ; echo $?) -ne 127 ]]; then
96+ echo ' Not logged into Docker. Exiting...'
97+ exit 1
98+ fi
99+
100+ # [docker] tag image as latest
101+ tag-latest :
102+ docker tag {{ APP}} :latest {{ IMAGE}} / {{ APP}} :latest
75103
76- # [docker] run local image
77- run : pull
78- docker run -it --rm -v $(pwd):/ app {{ IMAGE}} / ${APP_NAME}:${TAG} {{ SHELL}}
104+ # [docker] tag latest image from VERSION file
105+ tag-version :
106+ @ echo " create tag {{ APP}} :{{ VERSION}} {{ IMAGE}} /{{ APP}} :{{ VERSION}} "
107+ docker tag {{ APP}} {{ IMAGE}} / {{ APP}} :{{ VERSION}}
108+
109+ # [docker] push latest image
110+ push : login
111+ docker push {{ IMAGE}} / {{ APP}} :{{ TAG}}
112+
113+ # [docker] pull latest image
114+ pull : login
115+ docker pull {{ IMAGE}} / {{ APP}}
79116
80- # [docker] push latest image to ecr
81- release :
117+ # [docker] run container
118+ run : build
82119 #!/usr/bin/env bash
83120 # set -euxo pipefail
84-
85- AWS_DEFAULT_PROFILE=bastion.use1 aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${REGISTRY_URL}
86- docker push {{ IMAGE}} / ${APP_NAME}:${TAG}
121+ docker run --rm -it \
122+ - -name {{ APP}} \
123+ - -env -file .env \
124+ - -entrypoint={{ SHELL}} \
125+ - h ${HOST:-localhost} \
126+ - v $(pwd)/ conf:/ etc/ duoauthproxy \
127+ - p ${PORT:-1812 }:${PORT:-1812 / udp} \
128+ - p ${PORT2:-18120 }:${PORT2:-18120 / udp} \
129+ - -cap-drop=all \
130+ - -cap-add=setgid \
131+ - -cap-add=setuid \
132+ {{ APP}}
87133
88134# [docker] start docker-compose container
89- up :
90- docker-compose up -d
135+ up : build
136+ {{ docker-compose}} up -d
137+
138+ # [docker] get running container logs
139+ logs :
140+ {{ docker-compose}} logs -tf --tail=" 50" {{ APP}}
91141
92142# [docker] ssh into container
93143exec :
94- docker-compose exec {{ APP}} {{ SHELL}}
144+ docker exec -it {{ APP}} {{ SHELL}}
95145
96146# [docker] stop docker-compose container
97147stop :
98- docker-compose stop
148+ {{ docker-compose}} stop
99149
100150# [docker] remove docker-compose container(s) and networks
101151down : stop
102- docker-compose down --remove-orphans
103-
104- # [docker] tag image as latest
105- tag-latest :
106- @ echo " create tag ${APP_NAME}:${TAG} {{ IMAGE}} /${APP_NAME}:${TAG}"
107- docker tag ${APP_NAME}:${TAG} {{ IMAGE}} / ${APP_NAME}:${TAG}
108-
109- # [docker] tag image from VERSION file
110- tag-version :
111- @ echo " create tag ${APP_NAME}:{{ VERSION}} {{ IMAGE}} /${APP_NAME}:${TAG}"
112- docker tag ${APP_NAME}:{{ VERSION}} {{ IMAGE}} / ${APP_NAME}:${TAG}
152+ {{ docker-compose}} down --remove-orphans
0 commit comments