|
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