diff --git a/pkg/ddevapp/config.go b/pkg/ddevapp/config.go index 47c41f241f8..e93665f01cc 100644 --- a/pkg/ddevapp/config.go +++ b/pkg/ddevapp/config.go @@ -237,8 +237,6 @@ func (app *DdevApp) ReadConfig() error { app.OmitContainers = globalconfig.DdevGlobalConfig.OmitContainers } - app.ImportDir = app.GetConfigPath("import-db") - app.SetApptypeSettingsPaths() return nil diff --git a/pkg/ddevapp/ddevapp.go b/pkg/ddevapp/ddevapp.go index 009ac6af06c..866695feabb 100644 --- a/pkg/ddevapp/ddevapp.go +++ b/pkg/ddevapp/ddevapp.go @@ -2,6 +2,8 @@ package ddevapp import ( "fmt" + "github.com/mattn/go-isatty" + "io/ioutil" "os" "path/filepath" "strconv" @@ -28,7 +30,6 @@ import ( "github.com/drud/ddev/pkg/version" "github.com/fsouza/go-dockerclient" "github.com/lextoumbourou/goodhosts" - "github.com/mattn/go-isatty" "github.com/mattn/go-shellwords" ) @@ -90,7 +91,6 @@ type DdevApp struct { Platform string `yaml:"-"` Provider string `yaml:"provider,omitempty"` DataDir string `yaml:"-"` - ImportDir string `yaml:"-"` SiteSettingsPath string `yaml:"-"` SiteLocalSettingsPath string `yaml:"-"` providerInstance Provider `yaml:"-"` @@ -263,16 +263,16 @@ func (app *DdevApp) GetWebserverType() string { func (app *DdevApp) ImportDB(imPath string, extPath string, progress bool) error { app.DockerEnv() var extPathPrompt bool - dbPath := app.ImportDir - - err := app.ProcessHooks("pre-import-db") + dbPath, err := ioutil.TempDir(filepath.Dir(app.ConfigPath), "importdb") + //nolint: errcheck + defer os.RemoveAll(dbPath) if err != nil { return err } - err = fileutil.PurgeDirectory(dbPath) + err = app.ProcessHooks("pre-import-db") if err != nil { - return fmt.Errorf("failed to cleanup %s before import: %v", dbPath, err) + return err } if imPath == "" { @@ -340,9 +340,11 @@ func (app *DdevApp) ImportDB(imPath string, extPath string, progress bool) error return fmt.Errorf("no .sql or .mysql files found to import") } + // Inside the container, the dir for imports will be at /mnt/ddev_config/ + insideContainerImportPath := path.Join("/mnt/ddev_config", filepath.Base(dbPath)) _, _, err = app.Exec(&ExecOpts{ Service: "db", - Cmd: []string{"bash", "-c", "mysql --database=mysql -e 'DROP DATABASE IF EXISTS db; CREATE DATABASE db;' && pv /db/*.*sql | mysql db"}, + Cmd: []string{"bash", "-c", "mysql --database=mysql -e 'DROP DATABASE IF EXISTS db; CREATE DATABASE db;' && pv " + insideContainerImportPath + "/*.*sql | mysql db"}, Tty: progress && isatty.IsTerminal(os.Stderr.Fd()), }) @@ -696,11 +698,6 @@ func (app *DdevApp) Start() error { return err } - err = app.prepSiteDirs() - if err != nil { - return err - } - err = app.AddHostsEntries() if err != nil { return err @@ -933,7 +930,6 @@ func (app *DdevApp) DockerEnv() { "DDEV_BGSYNCIMAGE": app.BgsyncImage, "DDEV_APPROOT": app.AppRoot, "DDEV_DOCROOT": app.Docroot, - "DDEV_IMPORTDIR": app.ImportDir, "DDEV_URL": app.GetHTTPURL(), "DDEV_HOSTNAME": app.HostName(), "DDEV_UID": uidStr, @@ -1367,31 +1363,6 @@ func (app *DdevApp) RemoveHostsEntries() error { return nil } -// prepSiteDirs creates a site's directories for db container mounts -func (app *DdevApp) prepSiteDirs() error { - - dirs := []string{ - app.ImportDir, - } - - for _, dir := range dirs { - fileInfo, err := os.Stat(dir) - - if os.IsNotExist(err) { // If it doesn't exist, create it. - err = os.MkdirAll(dir, os.FileMode(int(0774))) - if err != nil { - return fmt.Errorf("Failed to create directory %s, err: %v", dir, err) - } - } else if err == nil && fileInfo.IsDir() { // If the directory exists, we're fine and don't have to create it. - continue - } else { // But otherwise it must have existed as a file, so bail - return fmt.Errorf("error trying to create directory %s, err: %v", dir, err) - } - } - - return nil -} - // GetActiveAppRoot returns the fully rooted directory of the active app, or an error func GetActiveAppRoot(siteName string) (string, error) { var siteDir string diff --git a/pkg/ddevapp/templates.go b/pkg/ddevapp/templates.go index b0b39b6bfdc..3c924f6dc55 100644 --- a/pkg/ddevapp/templates.go +++ b/pkg/ddevapp/templates.go @@ -15,9 +15,6 @@ services: target: "/var/lib/mysql" volume: nocopy: true - - type: "bind" - source: "${DDEV_IMPORTDIR}" - target: "/db" - type: "bind" source: "." target: "/mnt/ddev_config" diff --git a/pkg/dockerutil/testdata/docker-compose.override.yml b/pkg/dockerutil/testdata/docker-compose.override.yml index 4f13fcd1394..d806e6cd828 100644 --- a/pkg/dockerutil/testdata/docker-compose.override.yml +++ b/pkg/dockerutil/testdata/docker-compose.override.yml @@ -4,8 +4,6 @@ services: foo: container_name: ddev-test-foo image: some/image:1.1.0 - volumes: - - "${DDEV_IMPORTDIR}:/db" restart: always environment: - HTTP_EXPOSE=3306 diff --git a/pkg/dockerutil/testdata/docker-compose.yml b/pkg/dockerutil/testdata/docker-compose.yml index 7e5744fd8f7..d6b64e0ef61 100644 --- a/pkg/dockerutil/testdata/docker-compose.yml +++ b/pkg/dockerutil/testdata/docker-compose.yml @@ -5,8 +5,6 @@ services: container_name: ddev-test-db image: DDEV_DBIMAGE user: "$DDEV_UID:$DDEV_GID" - volumes: - - "${DDEV_IMPORTDIR}:/db" restart: always environment: - SOME_ENV=env_value_goes_here diff --git a/pkg/testcommon/testcommon.go b/pkg/testcommon/testcommon.go index b31658bda16..e9603b42fd2 100644 --- a/pkg/testcommon/testcommon.go +++ b/pkg/testcommon/testcommon.go @@ -201,7 +201,6 @@ func ClearDockerEnv() { "DDEV_DOCROOT", "DDEV_URL", "DDEV_HOSTNAME", - "DDEV_IMPORTDIR", "DDEV_PHP_VERSION", "DDEV_PROJECT_TYPE", "DDEV_ROUTER_HTTP_PORT",