environment(docker): cleanup code
This commit is contained in:
parent
66c9be357c
commit
4f4b4fd2e6
|
@ -309,16 +309,21 @@ func (e *Environment) followOutput() error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
go func(reader io.ReadCloser) {
|
||||
defer reader.Close()
|
||||
evts := e.Events()
|
||||
|
||||
events := e.Events()
|
||||
|
||||
err := system.ScanReader(reader, func(line string) {
|
||||
evts.Publish(environment.ConsoleOutputEvent, line)
|
||||
events.Publish(environment.ConsoleOutputEvent, line)
|
||||
})
|
||||
|
||||
if err != nil && err != io.EOF {
|
||||
log.WithField("error", err).WithField("container_id", e.Id).Warn("error processing scanner line in console output")
|
||||
}
|
||||
}(reader)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -405,9 +410,11 @@ func (e *Environment) ensureImageExists(image string) error {
|
|||
// I'm not sure what the best approach here is, but this will block execution until the image
|
||||
// is done being pulled, which is what we need.
|
||||
scanner := bufio.NewScanner(out)
|
||||
|
||||
for scanner.Scan() {
|
||||
s := imagePullStatus{}
|
||||
fmt.Println(scanner.Text())
|
||||
|
||||
if err := json.Unmarshal(scanner.Bytes(), &s); err == nil {
|
||||
e.Events().Publish(environment.DockerImagePullStatus, s.Status+" "+s.Progress)
|
||||
}
|
||||
|
|
|
@ -82,8 +82,9 @@ func (e *Environment) Type() string {
|
|||
// Set if this process is currently attached to the process.
|
||||
func (e *Environment) SetStream(s *types.HijackedResponse) {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
|
||||
e.stream = s
|
||||
e.mu.Unlock()
|
||||
}
|
||||
|
||||
// Determine if the this process is currently attached to the container.
|
||||
|
@ -98,6 +99,7 @@ func (e *Environment) Events() *events.EventBus {
|
|||
e.eventMu.Do(func() {
|
||||
e.emitter = events.New()
|
||||
})
|
||||
|
||||
return e.emitter
|
||||
}
|
||||
|
||||
|
@ -174,12 +176,14 @@ func (e *Environment) Config() *environment.Configuration {
|
|||
// Sets the stop configuration for the environment.
|
||||
func (e *Environment) SetStopConfiguration(c api.ProcessStopConfiguration) {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
|
||||
e.meta.Stop = c
|
||||
e.mu.Unlock()
|
||||
}
|
||||
|
||||
func (e *Environment) SetImage(i string) {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
|
||||
e.meta.Image = i
|
||||
e.mu.Unlock()
|
||||
}
|
||||
|
|
|
@ -20,10 +20,9 @@ import (
|
|||
//
|
||||
// This process will also confirm that the server environment exists and is in a bootable
|
||||
// state. This ensures that unexpected container deletion while Wings is running does
|
||||
// not result in the server becoming unbootable.
|
||||
// not result in the server becoming un-bootable.
|
||||
func (e *Environment) OnBeforeStart() error {
|
||||
// Always destroy and re-create the server container to ensure that synced data from
|
||||
// the Panel is usee.
|
||||
// Always destroy and re-create the server container to ensure that synced data from the Panel is used.
|
||||
if err := e.client.ContainerRemove(context.Background(), e.Id, types.ContainerRemoveOptions{RemoveVolumes: true}); err != nil {
|
||||
if !client.IsErrNotFound(err) {
|
||||
return errors.WithMessage(err, "failed to remove server docker container during pre-boot")
|
||||
|
@ -49,6 +48,7 @@ func (e *Environment) OnBeforeStart() error {
|
|||
// call to OnBeforeStart().
|
||||
func (e *Environment) Start() error {
|
||||
sawError := false
|
||||
|
||||
// If sawError is set to true there was an error somewhere in the pipeline that
|
||||
// got passed up, but we also want to ensure we set the server to be offline at
|
||||
// that point.
|
||||
|
@ -235,7 +235,7 @@ func (e *Environment) Terminate(signal os.Signal) error {
|
|||
|
||||
sig := strings.TrimSuffix(strings.TrimPrefix(signal.String(), "signal "), "ed")
|
||||
|
||||
if err := e.client.ContainerKill(context.Background(), e.Id, sig); err != nil {
|
||||
if err := e.client.ContainerKill(context.Background(), e.Id, sig); err != nil && !client.IsErrNotFound(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
@ -19,8 +19,9 @@ var ErrNotAttached = errors.New("not attached to instance")
|
|||
|
||||
func (e *Environment) setStream(s *types.HijackedResponse) {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
|
||||
e.stream = s
|
||||
e.mu.Unlock()
|
||||
}
|
||||
|
||||
// Sends the specified command to the stdin of the running container instance. There is no
|
||||
|
@ -71,7 +72,7 @@ func (e *Environment) Readlog(lines int) ([]string, error) {
|
|||
// Docker stores the logs for server output in a JSON format. This function will iterate over the JSON
|
||||
// that was read from the log file and parse it into a more human readable format.
|
||||
func (e *Environment) parseLogToStrings(b []byte) ([]string, error) {
|
||||
var hasError = false
|
||||
hasError := false
|
||||
var out []string
|
||||
|
||||
scanner := bufio.NewScanner(bytes.NewReader(b))
|
||||
|
|
Loading…
Reference in New Issue
Block a user