@@ -106,6 +106,78 @@ start_container() {
106
106
fi
107
107
}
108
108
109
+
110
+ update () {
111
+ local container_name=" $1 "
112
+ local version=" $2 "
113
+ local new_image
114
+
115
+ if [ -z " $version " ]; then
116
+ new_image=" ${DOCKER_IMAGE%:* } :latest"
117
+ log $BLUE " Updating $container_name to the latest version..."
118
+ else
119
+ new_image=" ${DOCKER_IMAGE%:* } :$version "
120
+ log $BLUE " Updating $container_name to version $version ..."
121
+ fi
122
+
123
+ if [ " $new_image " == " $DOCKER_IMAGE " ]; then
124
+ if is_image_up_to_date " $new_image " ; then
125
+ log $YELLOW " The specified image ($new_image ) is already in use and up-to-date. No update needed."
126
+ return
127
+ else
128
+ log $BLUE " The specified image ($new_image ) is in use but outdated. Updating..."
129
+ fi
130
+ fi
131
+
132
+ pull_image " $new_image "
133
+ cleanup " $container_name "
134
+ DOCKER_IMAGE=" $new_image "
135
+ start_container " $DOCKER_IMAGE " " $container_name "
136
+ add_container " $container_name "
137
+ log $GREEN " Update completed successfully for $container_name . New image: $DOCKER_IMAGE "
138
+ }
139
+
140
+ version () {
141
+ local container_name=" $1 "
142
+ log $BLUE " DevOps Toolkit Version Information for $container_name :"
143
+ log $GREEN " Current Docker Image: $DOCKER_IMAGE "
144
+ if docker inspect --type=container " $container_name " > /dev/null 2>&1 ; then
145
+ local container_image=$( docker inspect --format=' {{.Config.Image}}' " $container_name " )
146
+ log $GREEN " Running Container Image: $container_image "
147
+ else
148
+ log $YELLOW " No running container found for $container_name ."
149
+ fi
150
+ }
151
+
152
+ list_versions () {
153
+ log $BLUE " Available versions of DevOps Toolkit:"
154
+ local repo=" ${DOCKER_IMAGE%:* } "
155
+ curl -s " https://registry.hub.docker.com/v2/repositories/${repo} /tags?page_size=100" | \
156
+ jq -r ' .results[].name' | sort -V
157
+ }
158
+
159
+ health_check () {
160
+ local container_name=" $1 "
161
+ if docker inspect --type=container " $container_name " > /dev/null 2>&1 ; then
162
+ local status=$( docker inspect --format=' {{.State.Status}}' " $container_name " )
163
+ local health=$( docker inspect --format=' {{.State.Health.Status}}' " $container_name " )
164
+ log $GREEN " Container Status for $container_name : $status "
165
+ log $GREEN " Container Health for $container_name : ${health:- N/ A} "
166
+ else
167
+ log $RED " Container $container_name does not exist."
168
+ fi
169
+ }
170
+
171
+ show_logs () {
172
+ local container_name=" $1 "
173
+ if docker inspect --type=container " $container_name " > /dev/null 2>&1 ; then
174
+ docker logs " $container_name "
175
+ else
176
+ log $RED " Container $container_name does not exist."
177
+ fi
178
+ }
179
+
180
+
109
181
exec_in_container () {
110
182
local container_name=" $1 "
111
183
shift
0 commit comments