@@ -229,7 +229,31 @@ func (de *DockerEngine) attemptAuth() error {
229229 return nil
230230}
231231
232+ func (de * DockerEngine ) developerModeRefresh (bundle * config.Bundle ) error {
233+ if de .relayConfig .DevMode == true {
234+ fullName := fmt .Sprintf ("%s:%s" , bundle .Docker .Image , bundle .Docker .Tag )
235+ log .Warnf ("Developer mode: Refreshing Docker image %s." , fullName )
236+ err := de .pullImage (fullName )
237+ if err != nil {
238+ log .Errorf ("Developer mode: Refresh of Docker image %s failed: %s." , fullName , err )
239+ return err
240+ }
241+ image , _ , err := de .client .ImageInspectWithRaw (context .Background (), fullName , false )
242+ if err != nil {
243+ log .Errorf ("Developer mode: Docker image %s downloaded but can't be found locally: %s." , fullName , err )
244+ return err
245+ }
246+ log .Warnf ("Developer mode: Docker image %s refreshed. Image id is %s." , fullName , shortImageID (image .ID ))
247+ }
248+ return nil
249+ }
250+
232251func (de * DockerEngine ) newEnvironment (bundle * config.Bundle ) (circuit.Environment , error ) {
252+ // Only happens if Relay is running in developer mode
253+ err := de .developerModeRefresh (bundle )
254+ if err != nil {
255+ return nil , err
256+ }
233257 client , err := newClient (de .config )
234258 if err != nil {
235259 return nil , err
@@ -260,6 +284,10 @@ func (de *DockerEngine) needsUpdate(name, meta string) bool {
260284}
261285
262286func (de * DockerEngine ) pullImage (fullName string ) error {
287+ err := de .ensureConnected ()
288+ if err != nil {
289+ return err
290+ }
263291 closer , pullErr := de .client .ImagePull (context .Background (), fullName ,
264292 types.ImagePullOptions {
265293 All : false ,
0 commit comments