Skip to content

Commit 4de1ef6

Browse files
committed
Check if image exists locally before pulling or building
When starting the development container, check if the image exists locally before pulling or building it. Signed-off-by: Evans Mungai <[email protected]>
1 parent 83c1dc0 commit 4de1ef6

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

applications/wg-easy/taskfiles/container.yml

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,48 @@ tasks:
55
build-image:
66
desc: Build development container image
77
vars:
8-
DEV_CONTAINER_TAG: '{{.DEV_CONTAINER_TAG | default "latest"}}'
8+
IMAGE_NAME: '{{.DEV_CONTAINER_REGISTRY}}/{{.DEV_CONTAINER_IMAGE}}:{{.DEV_CONTAINER_TAG}}'
99
CONTAINERFILE: '{{.CONTAINERFILE | default "./container/Containerfile"}}'
1010
BUILD_ARGS: '{{.BUILD_ARGS | default ""}}'
1111
requires:
1212
vars: [DEV_CONTAINER_REGISTRY, DEV_CONTAINER_IMAGE, CONTAINERFILE]
1313

1414
cmds:
15-
- '{{.CONTAINER_RUNTIME}} build -t {{.DEV_CONTAINER_REGISTRY}}/{{.DEV_CONTAINER_IMAGE}}:{{.DEV_CONTAINER_TAG}} -f {{.CONTAINERFILE}} .'
15+
- '{{.CONTAINER_RUNTIME}} build -t {{.IMAGE_NAME}} -f {{.CONTAINERFILE}} .'
1616

1717
# Start development container in background.
1818
start:
1919
desc: Start development container in background
2020
silent: true
2121
run: once
2222
vars:
23-
DEV_CONTAINER_TAG: '{{.DEV_CONTAINER_TAG | default "latest"}}'
23+
IMAGE_NAME: '{{.DEV_CONTAINER_REGISTRY}}/{{.DEV_CONTAINER_IMAGE}}:{{.DEV_CONTAINER_TAG}}'
24+
CONTAINERFILE: '{{.CONTAINERFILE | default "./container/Containerfile"}}'
25+
BUILD_ARGS: '{{.BUILD_ARGS | default ""}}'
2426
requires:
2527
vars: [DEV_CONTAINER_REGISTRY, DEV_CONTAINER_IMAGE, DEV_CONTAINER_TAG, DEV_CONTAINER_NAME, REPLICATED_API_TOKEN]
2628

2729
status:
2830
- '{{.CONTAINER_RUNTIME}} ps | grep -q "{{.DEV_CONTAINER_NAME}}"'
2931
cmds:
3032
- |
33+
# Check if the image exists locally
34+
# If not, pull it from the registry
35+
# If that fails, build it locally
36+
if ! {{.CONTAINER_RUNTIME}} image exists {{.IMAGE_NAME}}; then
37+
echo "Image {{.IMAGE_NAME}} not found locally."
38+
echo "Attempting to pull the image..."
39+
if ! {{.CONTAINER_RUNTIME}} pull {{.IMAGE_NAME}}; then
40+
echo "Failed to pull image. Building it locally..."
41+
{{.CONTAINER_RUNTIME}} build -t {{.IMAGE_NAME}} -f {{.CONTAINERFILE}} .
42+
fi
43+
fi
44+
3145
# Start container with host networking for kubectl port-forward compatibility
3246
CONTAINER_ID=$({{.CONTAINER_RUNTIME}} run --rm --name {{.DEV_CONTAINER_NAME}} -d \
3347
-v $(pwd):/workspace \
3448
-e REPLICATED_API_TOKEN={{ .REPLICATED_API_TOKEN }} \
35-
{{.DEV_CONTAINER_REGISTRY}}/{{.DEV_CONTAINER_IMAGE}}:{{.DEV_CONTAINER_TAG}} bash -c 'trap "exit 0" TERM; sleep infinity & wait')
49+
{{.IMAGE_NAME}} bash -c 'trap "exit 0" TERM; sleep infinity & wait')
3650
3751
if [ $? -eq 0 ]; then
3852
echo "Development container started successfully with ID: $CONTAINER_ID"

0 commit comments

Comments
 (0)