Skip to content

Commit 0258bcf

Browse files
boricemuuki88
authored andcommitted
Possible improvement for #1202 (#1235)
* Possible improvement for #1202 * Fixed code formatting
1 parent ff3682a commit 0258bcf

File tree

6 files changed

+38
-8
lines changed

6 files changed

+38
-8
lines changed

src/main/scala/com/typesafe/sbt/packager/docker/DockerPlugin.scala

+11-3
Original file line numberDiff line numberDiff line change
@@ -369,14 +369,22 @@ object DockerPlugin extends AutoPlugin {
369369
gidOpt: Option[String]): CmdLike =
370370
Cmd(
371371
"RUN",
372-
(List("id", "-u", daemonUser, "2>", "/dev/null", "||") :::
372+
(List("id", "-u", daemonUser, "1>/dev/null", "2>&1", "||") :::
373373
(gidOpt.fold[List[String]](Nil)(
374-
gid => List("((", "getent", "group", gid, "||", "groupadd", "-g", gid, daemonGroup, ")", "&&")
374+
gid =>
375+
List("((", "getent", "group", gid, "1>/dev/null", "2>&1", "||") :::
376+
List("(", "type", "groupadd", "1>/dev/null", "2>&1", "&&") :::
377+
List("groupadd", "-g", gid, daemonGroup, "||") :::
378+
List("addgroup", "-g", gid, "-S", daemonGroup, "))", "&&")
375379
)) :::
380+
List("(", "type", "useradd", "1>/dev/null", "2>&1", "&&") :::
376381
List("useradd", "--system", "--create-home") :::
377382
(uidOpt.fold[List[String]](Nil)(List("--uid", _))) :::
378383
(gidOpt.fold[List[String]](Nil)(List("--gid", _))) :::
379-
List(daemonUser, ")")): _*
384+
List(daemonUser, "||") :::
385+
List("adduser", "-S") :::
386+
(uidOpt.fold[List[String]](Nil)(List("-u", _))) :::
387+
List("-G", daemonGroup, daemonUser, "))")): _*
380388
)
381389

382390
/**

src/sbt-test/docker/file-permission/build.sbt

+5-5
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ lazy val root = (project in file("."))
2323
|
2424
|FROM fabric8/java-centos-openjdk8-jdk
2525
|USER root
26-
|RUN id -u demiourgos728 2> /dev/null || (( getent group 0 || groupadd -g 0 root ) && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 )
26+
|RUN id -u demiourgos728 1>/dev/null 2>&1 || (( getent group 0 1>/dev/null 2>&1 || ( type groupadd 1>/dev/null 2>&1 && groupadd -g 0 root || addgroup -g 0 -S root )) && ( type useradd 1>/dev/null 2>&1 && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 || adduser -S -u 1001 -G root demiourgos728 ))
2727
|WORKDIR /opt/docker
2828
|COPY --from=stage0 --chown=demiourgos728:root /opt/docker /opt/docker
2929
|USER 1001:0
@@ -37,7 +37,7 @@ lazy val root = (project in file("."))
3737
assertEquals(lines,
3838
"""FROM fabric8/java-centos-openjdk8-jdk
3939
|USER root
40-
|RUN id -u demiourgos728 2> /dev/null || (( getent group 0 || groupadd -g 0 root ) && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 )
40+
|RUN id -u demiourgos728 1>/dev/null 2>&1 || (( getent group 0 1>/dev/null 2>&1 || ( type groupadd 1>/dev/null 2>&1 && groupadd -g 0 root || addgroup -g 0 -S root )) && ( type useradd 1>/dev/null 2>&1 && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 || adduser -S -u 1001 -G root demiourgos728 ))
4141
|WORKDIR /opt/docker
4242
|COPY opt /opt
4343
|USER 1001:0
@@ -51,7 +51,7 @@ lazy val root = (project in file("."))
5151
assertEquals(lines,
5252
"""FROM fabric8/java-centos-openjdk8-jdk
5353
|USER root
54-
|RUN id -u demiourgos728 2> /dev/null || (( getent group 5000 || groupadd -g 5000 sbt ) && useradd --system --create-home --uid 1001 --gid 5000 demiourgos728 )
54+
|RUN id -u demiourgos728 1>/dev/null 2>&1 || (( getent group 5000 1>/dev/null 2>&1 || ( type groupadd 1>/dev/null 2>&1 && groupadd -g 5000 sbt || addgroup -g 5000 -S sbt )) && ( type useradd 1>/dev/null 2>&1 && useradd --system --create-home --uid 1001 --gid 5000 demiourgos728 || adduser -S -u 1001 -G sbt demiourgos728 ))
5555
|WORKDIR /opt/docker
5656
|COPY opt /opt
5757
|USER 1001:5000
@@ -65,7 +65,7 @@ lazy val root = (project in file("."))
6565
assertEquals(lines,
6666
"""FROM openjdk:8
6767
|USER root
68-
|RUN id -u demiourgos728 2> /dev/null || (( getent group 0 || groupadd -g 0 root ) && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 )
68+
|RUN id -u demiourgos728 1>/dev/null 2>&1 || (( getent group 0 1>/dev/null 2>&1 || ( type groupadd 1>/dev/null 2>&1 && groupadd -g 0 root || addgroup -g 0 -S root )) && ( type useradd 1>/dev/null 2>&1 && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 || adduser -S -u 1001 -G root demiourgos728 ))
6969
|WORKDIR /opt/docker
7070
|COPY opt /opt
7171
|RUN ["chmod", "-R", "u=rX,g=rX", "/opt/docker"]
@@ -100,7 +100,7 @@ lazy val root = (project in file("."))
100100
|
101101
|FROM fabric8/java-centos-openjdk8-jdk
102102
|USER root
103-
|RUN id -u demiourgos728 2> /dev/null || (( getent group 0 || groupadd -g 0 root ) && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 )
103+
|RUN id -u demiourgos728 1>/dev/null 2>&1 || (( getent group 0 1>/dev/null 2>&1 || ( type groupadd 1>/dev/null 2>&1 && groupadd -g 0 root || addgroup -g 0 -S root )) && ( type useradd 1>/dev/null 2>&1 && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 || adduser -S -u 1001 -G root demiourgos728 ))
104104
|WORKDIR /opt/docker
105105
|COPY --from=stage0 --chown=demiourgos728:root /opt/docker /opt/docker
106106
|USER 1001:0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
enablePlugins(JavaAppPackaging)
3+
4+
name := "test-busybox-create-user"
5+
6+
version := "0.1.0"
7+
8+
maintainer := "Boris Capitanu <[email protected]>"
9+
dockerBaseImage := "anapsix/alpine-java:8"
10+
daemonUserUid in Docker := Some("2000")
11+
daemonUser in Docker := "appuser"
12+
daemonGroupGid in Docker := Some("3000")
13+
daemonGroup in Docker := "appgroup"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("project.version"))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import com.sun.security.auth.module.UnixSystem
2+
3+
object Main extends App {
4+
println(System.getProperty("user.name"))
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Generate the Docker image locally
2+
> docker:publishLocal
3+
$ exec bash -c 'docker run test-busybox-create-user:0.1.0 | grep -q "appuser"'

0 commit comments

Comments
 (0)