@@ -18,7 +18,7 @@ import sbt.Keys.{
18
18
import packager .Keys ._
19
19
import linux .LinuxPlugin .autoImport .{ daemonUser , defaultLinuxInstallLocation }
20
20
import universal .UniversalPlugin .autoImport .stage
21
- import SbtNativePackager .Universal
21
+ import SbtNativePackager .{ Universal , Linux }
22
22
23
23
/**
24
24
* == Docker Plugin ==
@@ -74,17 +74,18 @@ object DockerPlugin extends AutoPlugin {
74
74
75
75
val generalCommands = makeFrom(dockerBaseImage.value) +: makeMaintainer((maintainer in Docker ).value).toSeq
76
76
77
- generalCommands ++
77
+ generalCommands ++ Seq (
78
+ makeWorkdir(dockerBaseDirectory),
79
+ makeAdd(dockerBaseDirectory),
80
+ makeChown(user, group, " ." :: Nil )
81
+ ) ++
82
+ makeExposePorts(dockerExposedPorts.value) ++
83
+ makeVolumes(dockerExposedVolumes.value, user, group) ++
78
84
Seq (
79
- makeAdd(dockerBaseDirectory),
80
- makeWorkdir(dockerBaseDirectory),
81
- makeChown(user, group, " ." ),
82
85
makeUser(user),
83
86
makeEntrypoint(dockerEntrypoint.value),
84
87
makeCmd(dockerCmd.value)
85
- ) ++
86
- makeExposePorts(dockerExposedPorts.value) ++
87
- makeVolumes(dockerExposedVolumes.value, user, group)
88
+ )
88
89
89
90
}
90
91
@@ -158,8 +159,8 @@ object DockerPlugin extends AutoPlugin {
158
159
* @param directory to chown recursively
159
160
* @return chown command, owning the installation directory with the daemonuser
160
161
*/
161
- private final def makeChown (daemonUser : String , daemonGroup : String , directory : String ): CmdLike =
162
- ExecCmd (" RUN" , " chown" , " -R" , s " $daemonUser: $daemonGroup" , directory )
162
+ private final def makeChown (daemonUser : String , daemonGroup : String , directories : Seq [ String ] ): CmdLike =
163
+ ExecCmd (" RUN" , Seq ( " chown" , " -R" , s " $daemonUser: $daemonGroup" ) ++ directories : _* )
163
164
164
165
/**
165
166
* @param daemonUser
@@ -199,12 +200,14 @@ object DockerPlugin extends AutoPlugin {
199
200
*
200
201
* @param exposedVolumes
201
202
* @return commands to create, chown and declare volumes
203
+ * @see http://stackoverflow.com/questions/23544282/what-is-the-best-way-to-manage-permissions-for-docker-shared-volumes
204
+ * @see https://docs.docker.com/userguide/dockervolumes/
202
205
*/
203
206
private final def makeVolumes (exposedVolumes : Seq [String ], daemonUser : String , daemonGroup : String ): Seq [CmdLike ] = {
204
207
if (exposedVolumes.isEmpty) Seq ()
205
208
else Seq (
206
209
ExecCmd (" RUN" , Seq (" mkdir" , " -p" ) ++ exposedVolumes : _* ),
207
- makeChown(daemonUser, daemonGroup, exposedVolumes mkString " " ),
210
+ makeChown(daemonUser, daemonGroup, exposedVolumes),
208
211
ExecCmd (" VOLUME" , exposedVolumes : _* )
209
212
)
210
213
}
0 commit comments