You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: eject.go
    path of file: ./repos/encore/cli/cmd/encore
    
    the code of the file until where you have to start completion: package main

import (
	"context"
	"fmt"
	"os"
	"os/signal"
	"runtime"

	"github.com/spf13/cobra"

	daemonpb "encr.dev/proto/encore/daemon"
)

func init() {
	ejectCmd := &cobra.Command{
		Use:   "eject",
		Short: "eject provides ways to eject
    
func dockerEject(p ejectParams) {
	interrupt := make(chan os.Signal, 1)
	signal.Notify(interrupt, os.Interrupt)

	ctx, cancel := context.WithCancel(context.Background())
	go func() {
		<-interrupt
		cancel()
	}()

	daemon := setupDaemon(ctx)
	params := &daemonpb.DockerExportParams{
		BaseImageTag: p.BaseImg,
	}
	if p.Push {
		params.PushDestinationTag = p.ImageTag
	} else {
		params.LocalDaemonTag = p.ImageTag
	}

	stream, err := daemon.Export(ctx, &daemonpb.ExportRequest{
		AppRoot:    p.AppRoot,
		CgoEnabled: p.CgoEnabled,
		Goos:       p.Goos,
		Goarch:     p.Goarch,
		Environ:    os.Environ(),
		Format: &daemonpb.ExportRequest_Docker{
			Docker: params,
		},
	})
	if err != nil {
		fmt.Fprintln(os.Stderr, "fatal: ", err)
		os.Exit(1)
	}
	if code := streamCommandOutput(stream, convertJSONLogs()); code != 0 {
		os.Exit(code)
	}
	fmt.Print(`
Successfully ejected Encore application.
To run the container, specify the environment variables ENCORE_RUNTIME_CONFIG and ENCORE_APP_SECRETS
as documented here: https://encore.dev/docs/how-to/migrate-away.

`)

}