Skip to content

Commit a6b0d83

Browse files
committed
Saving changes
1 parent a47d898 commit a6b0d83

File tree

3 files changed

+37
-23
lines changed

3 files changed

+37
-23
lines changed

internal/container/controller.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"bufio"
99
"bytes"
1010
"context"
11+
"fmt"
1112
"github.com/docker/docker/api/types"
1213
"github.com/docker/docker/api/types/container"
1314
"github.com/docker/docker/api/types/filters"
@@ -308,7 +309,7 @@ func (c Controller) RunCmdInContainer(
308309
AttachStderr: true,
309310
AttachStdout: true,
310311
Cmd: cmd,
311-
//Env: []string{"DOTNET_ROOT=/root/.dotnet"},
312+
Env: options.Env,
312313
},
313314
)
314315
checkErr(err)
@@ -338,6 +339,7 @@ func (c Controller) RunCmdInContainer(
338339
stderr, err := io.ReadAll(&errBuf)
339340
checkErr(err)
340341

342+
trace(fmt.Sprintf("Err: %v", err))
341343
trace("Stdout: " + string(stdout))
342344
trace("Stderr: " + string(stderr))
343345

pkg/mssqlcontainer/ingest/location/local.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package location
33
import (
44
"github.com/microsoft/go-sqlcmd/internal/container"
55
"github.com/microsoft/go-sqlcmd/internal/io/file"
6+
"path/filepath"
67
)
78

89
type local struct {
@@ -29,12 +30,17 @@ func (l local) CopyToContainer(containerId string, destFolder string) {
2930
destFolder,
3031
)
3132

32-
/*
33-
_, filename := filepath.Split(l.uri)
33+
_, filename := filepath.Split(l.uri)
3434

35-
l.controller.RunCmdInContainer(
36-
containerId,
37-
[]string{"chmod", "g+r", destFolder + "/" + filename},
38-
container.ExecOptions{},
39-
)*/
35+
l.controller.RunCmdInContainer(
36+
containerId,
37+
[]string{"chown", "mssql:root", destFolder + "/" + filename},
38+
container.ExecOptions{User: "root"},
39+
)
40+
41+
l.controller.RunCmdInContainer(
42+
containerId,
43+
[]string{"chmod", "-o-r-u+rw-g+r", destFolder + "/" + filename},
44+
container.ExecOptions{User: "root"},
45+
)
4046
}

pkg/mssqlcontainer/ingest/mechanism/bacpac.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (m *bacpac) BringOnline(
3737
m.setDefaultDatabaseToMaster(options.Username, query)
3838

3939
m.RunCommand([]string{
40-
"./.dotnet/tools/sqlpackage",
40+
"/home/mssql/.dotnet/tools/sqlpackage",
4141
"/Diagnostics:true",
4242
"/Action:import",
4343
"/SourceFile:" + m.CopyToLocation() + "/" + options.Filename,
@@ -62,29 +62,35 @@ func (m *bacpac) installSqlPackage() {
6262
panic("controller is nil")
6363
}
6464

65-
//BUG(stuartpa): Can this be done in the mssql user, don't think it needs root
66-
m.RunCommand([]string{"wget", "https://dot.net/v1/dotnet-install.sh", "-O", "/tmp/dotnet-install.sh"})
67-
m.RunCommand([]string{"chmod", "+x", "/tmp/dotnet-install.sh"})
68-
m.RunCommand([]string{"/tmp/dotnet-install.sh", "--install-dir", "/opt/dotnet"})
65+
_, stderr := m.RunCommand([]string{"/opt/dotnet/dotnet", "--version"})
66+
if len(stderr) > 0 {
67+
m.RunCommand([]string{"wget", "https://dot.net/v1/dotnet-install.sh", "-O", "/tmp/dotnet-install.sh"})
68+
m.RunCommand([]string{"chmod", "+x", "/tmp/dotnet-install.sh"})
69+
m.RunCommand([]string{"/tmp/dotnet-install.sh", "--install-dir", "/opt/dotnet"})
6970

70-
// The SQL Server container doesn't have a /home/mssql directory (which is ~), this
71-
// causes all sorts of things to break in the container that expect to create .toolname folders
72-
m.RunCommandAsRoot([]string{"mkdir", "-p", "/home/mssql"})
73-
m.RunCommandAsRoot([]string{"chown", "mssql:root", "/home/mssql"})
71+
// The SQL Server container doesn't have a /home/mssql directory (which is ~), this
72+
// causes all sorts of things to break in the container that expect to create .toolname folders
73+
m.RunCommandAsRoot([]string{"mkdir", "-p", "/home/mssql"})
74+
m.RunCommandAsRoot([]string{"chown", "mssql:root", "/home/mssql"})
7475

75-
m.RunCommand([]string{"touch", "/home/mssql/.bashrc"})
76-
m.RunCommand([]string{"sed", "-i", "$ a/export DOTNET_ROOT=/opt/dotnet", "/home/mssql/.bashrc"})
77-
m.RunCommand([]string{"sed", "-i", "$ a/export PATH=$PATH:$DOTNET_ROOT:~/.dotnet/tools", "/home/mssql/.bashrc"})
78-
m.RunCommand([]string{"/opt/dotnet/dotnet", "tool", "install", "-g", "microsoft.sqlpackage"})
76+
m.RunCommand([]string{"/bin/bash", "-c", "echo 'export DOTNET_ROOT=/opt/dotnet' > /home/mssql/.bashrc"})
77+
m.RunCommand([]string{"/bin/bash", "-c", "echo 'export PATH=$PATH:$DOTNET_ROOT:/home/mssql/.dotnet/tools' >> /home/mssql/.bashrc"})
78+
}
79+
80+
_, stderr = m.RunCommand([]string{"/home/mssql/.dotnet/tools/sqlpackage", "/version"})
81+
if len(stderr) > 0 {
82+
m.RunCommand([]string{"/opt/dotnet/dotnet", "tool", "install", "-g", "microsoft.sqlpackage"})
83+
}
7984
}
8085

8186
func (m *bacpac) RunCommand(s []string) ([]byte, []byte) {
82-
return m.controller.RunCmdInContainer(m.containerId, s, container.ExecOptions{})
87+
return m.controller.RunCmdInContainer(m.containerId, s, container.ExecOptions{
88+
Env: []string{"DOTNET_ROOT=/opt/dotnet"},
89+
})
8390
}
8491

8592
func (m *bacpac) RunCommandAsRoot(s []string) ([]byte, []byte) {
8693
return m.controller.RunCmdInContainer(m.containerId, s, container.ExecOptions{
8794
User: "root",
88-
Env: nil,
8995
})
9096
}

0 commit comments

Comments
 (0)