|
5 | 5 | build-image:
|
6 | 6 | desc: Build development container image
|
7 | 7 | vars:
|
8 |
| - DEV_CONTAINER_TAG: '{{.DEV_CONTAINER_TAG | default "latest"}}' |
| 8 | + IMAGE_NAME: '{{.DEV_CONTAINER_REGISTRY}}/{{.DEV_CONTAINER_IMAGE}}:{{.DEV_CONTAINER_TAG}}' |
9 | 9 | CONTAINERFILE: '{{.CONTAINERFILE | default "./container/Containerfile"}}'
|
10 | 10 | BUILD_ARGS: '{{.BUILD_ARGS | default ""}}'
|
11 | 11 | requires:
|
12 | 12 | vars: [DEV_CONTAINER_REGISTRY, DEV_CONTAINER_IMAGE, CONTAINERFILE]
|
13 | 13 |
|
14 | 14 | 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}} .' |
16 | 16 |
|
17 | 17 | # Start development container in background.
|
18 | 18 | start:
|
19 | 19 | desc: Start development container in background
|
20 | 20 | silent: true
|
21 | 21 | run: once
|
22 | 22 | 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 ""}}' |
24 | 26 | requires:
|
25 | 27 | vars: [DEV_CONTAINER_REGISTRY, DEV_CONTAINER_IMAGE, DEV_CONTAINER_TAG, DEV_CONTAINER_NAME, REPLICATED_API_TOKEN]
|
26 | 28 |
|
27 | 29 | status:
|
28 | 30 | - '{{.CONTAINER_RUNTIME}} ps | grep -q "{{.DEV_CONTAINER_NAME}}"'
|
29 | 31 | cmds:
|
30 | 32 | - |
|
| 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 | +
|
31 | 45 | # Start container with host networking for kubectl port-forward compatibility
|
32 | 46 | CONTAINER_ID=$({{.CONTAINER_RUNTIME}} run --rm --name {{.DEV_CONTAINER_NAME}} -d \
|
33 | 47 | -v $(pwd):/workspace \
|
34 | 48 | -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') |
36 | 50 |
|
37 | 51 | if [ $? -eq 0 ]; then
|
38 | 52 | echo "Development container started successfully with ID: $CONTAINER_ID"
|
|
0 commit comments