From 96af419c004b1371d09bc26b11d7c1692d3352d9 Mon Sep 17 00:00:00 2001 From: Matt Moore Date: Wed, 10 May 2017 17:47:46 +0000 Subject: [PATCH 1/3] Add Bazel build rules to the sample app. --- .gitignore | 3 +++ flexible/helloworld/BUILD | 11 ++++++++++ flexible/helloworld/WORKSPACE | 37 ++++++++++++++++++++++++++++++++ flexible/helloworld/docker/BUILD | 22 +++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 flexible/helloworld/BUILD create mode 100644 flexible/helloworld/WORKSPACE create mode 100644 flexible/helloworld/docker/BUILD diff --git a/.gitignore b/.gitignore index 9933e9cbd0d..267c922c5bd 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,6 @@ out/ # OSX .DS_Store + +# Bazel artifacts +bazel-* \ No newline at end of file diff --git a/flexible/helloworld/BUILD b/flexible/helloworld/BUILD new file mode 100644 index 00000000000..1bf144232a0 --- /dev/null +++ b/flexible/helloworld/BUILD @@ -0,0 +1,11 @@ +package(default_visibility = ["//visibility:public"]) + +load("@io_bazel_rules_appengine//appengine:appengine.bzl", "java_war") + +java_war( + name = "helloworld", + srcs = glob(["src/main/**/*.java"]), + deps = [ + "@servlet_api//jar:jar", + ], +) diff --git a/flexible/helloworld/WORKSPACE b/flexible/helloworld/WORKSPACE new file mode 100644 index 00000000000..77aa141d961 --- /dev/null +++ b/flexible/helloworld/WORKSPACE @@ -0,0 +1,37 @@ +workspace(name = "helloworld") + +maven_jar( + name = "servlet_api", + artifact = "javax.servlet:javax.servlet-api:3.1.0", +) + +git_repository( + name = "io_bazel_rules_appengine", + remote = "https://github.com/bazelbuild/rules_appengine.git", + # Check https://github.com/bazelbuild/rules_appengine/releases for the latest version. + tag = "0.0.5", +) + +#Java +load("@io_bazel_rules_appengine//appengine:appengine.bzl", "appengine_repositories") +appengine_repositories() + + +git_repository( + name = "io_bazel_rules_docker", + remote = "https://github.com/bazelbuild/rules_docker.git", + commit = "921c8fbd6eacd0b2129e0aa26200656720546bd1", +) + +load( + "@io_bazel_rules_docker//docker:docker.bzl", + "docker_repositories", "docker_pull" +) +docker_repositories() + +docker_pull( + name = "jetty", + registry = "gcr.io", + repository = "convoy-adapter/bazel", + tag = "jetty-demo", +) \ No newline at end of file diff --git a/flexible/helloworld/docker/BUILD b/flexible/helloworld/docker/BUILD new file mode 100644 index 00000000000..8cd4c16eee9 --- /dev/null +++ b/flexible/helloworld/docker/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:private"]) + +load( + "@io_bazel_rules_docker//docker:docker.bzl", + "docker_build", "docker_push", +) + +docker_build( + name = "image", + base = "@jetty//image:image.tar", + directory = "/jetty/webapps", + files = ["//:helloworld.war"], + workdir = "/jetty", +) + +docker_push( + name = "push", + image = ":image.tar", + registry = "gcr.io", + repository = "convoy-adapter/bazel-examples", + tag = "helloworld-bazel", +) \ No newline at end of file From aed438eddc36e27e96d315e8c662e78319186c7f Mon Sep 17 00:00:00 2001 From: Matt Moore Date: Wed, 10 May 2017 13:44:01 -0700 Subject: [PATCH 2/3] Add a Dockerfile that can build the hello world app atop our distroless base. docker pull gcr.io/convoy-adapter/bazel:jetty-demo docker build -t blah -f flexible/helloworld/Dockerfile . docker run -ti --rm -p 8080:8080 blah --- flexible/helloworld/Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 flexible/helloworld/Dockerfile diff --git a/flexible/helloworld/Dockerfile b/flexible/helloworld/Dockerfile new file mode 100644 index 00000000000..f56a2bca36a --- /dev/null +++ b/flexible/helloworld/Dockerfile @@ -0,0 +1,8 @@ +FROM maven:3.5-jdk-8 AS builder +COPY . /workspace/ +WORKDIR /workspace/flexible/helloworld +RUN mvn package + +FROM gcr.io/convoy-adapter/bazel:jetty-demo +WORKDIR /jetty +COPY --from=builder /workspace/flexible/helloworld/target/flexible-helloworld-1.0-SNAPSHOT.war /jetty/webapps/helloworld.war From 87c4bae5d06eee848f278238fc8d6401e77ab07a Mon Sep 17 00:00:00 2001 From: Matt Moore Date: Thu, 18 May 2017 14:48:26 -0700 Subject: [PATCH 3/3] Update to proper distroless base images. --- flexible/helloworld/BUILD | 21 +++++++++++++++++++++ flexible/helloworld/Dockerfile | 2 +- flexible/helloworld/WORKSPACE | 6 +++--- flexible/helloworld/docker/BUILD | 22 ---------------------- 4 files changed, 25 insertions(+), 26 deletions(-) delete mode 100644 flexible/helloworld/docker/BUILD diff --git a/flexible/helloworld/BUILD b/flexible/helloworld/BUILD index 1bf144232a0..58569a4d5a9 100644 --- a/flexible/helloworld/BUILD +++ b/flexible/helloworld/BUILD @@ -9,3 +9,24 @@ java_war( "@servlet_api//jar:jar", ], ) + +load( + "@io_bazel_rules_docker//docker:docker.bzl", + "docker_build", "docker_push", +) + +docker_build( + name = "image", + base = "@jetty//image:image.tar", + + # Add helloworld.war under /jetty/webapps + directory = "/jetty/webapps", + files = ["//:helloworld.war"], +) + +docker_push( + name = "push", + image = ":image.tar", + registry = "gcr.io", + repository = "convoy-adapter/swampup", +) \ No newline at end of file diff --git a/flexible/helloworld/Dockerfile b/flexible/helloworld/Dockerfile index f56a2bca36a..165cb71de4b 100644 --- a/flexible/helloworld/Dockerfile +++ b/flexible/helloworld/Dockerfile @@ -3,6 +3,6 @@ COPY . /workspace/ WORKDIR /workspace/flexible/helloworld RUN mvn package -FROM gcr.io/convoy-adapter/bazel:jetty-demo +FROM gcr.io/distroless/java/jetty WORKDIR /jetty COPY --from=builder /workspace/flexible/helloworld/target/flexible-helloworld-1.0-SNAPSHOT.war /jetty/webapps/helloworld.war diff --git a/flexible/helloworld/WORKSPACE b/flexible/helloworld/WORKSPACE index 77aa141d961..f570cfea40a 100644 --- a/flexible/helloworld/WORKSPACE +++ b/flexible/helloworld/WORKSPACE @@ -20,7 +20,7 @@ appengine_repositories() git_repository( name = "io_bazel_rules_docker", remote = "https://github.com/bazelbuild/rules_docker.git", - commit = "921c8fbd6eacd0b2129e0aa26200656720546bd1", + commit = "71bbc36a45346668be52cae4df5a8e7a96920f24", ) load( @@ -32,6 +32,6 @@ docker_repositories() docker_pull( name = "jetty", registry = "gcr.io", - repository = "convoy-adapter/bazel", - tag = "jetty-demo", + repository = "distroless/java/jetty", + digest = "sha256:87ae1deef030f322af909b0fe44edd19b60610a7623dbd5665156757e5930fb3", ) \ No newline at end of file diff --git a/flexible/helloworld/docker/BUILD b/flexible/helloworld/docker/BUILD deleted file mode 100644 index 8cd4c16eee9..00000000000 --- a/flexible/helloworld/docker/BUILD +++ /dev/null @@ -1,22 +0,0 @@ -package(default_visibility = ["//visibility:private"]) - -load( - "@io_bazel_rules_docker//docker:docker.bzl", - "docker_build", "docker_push", -) - -docker_build( - name = "image", - base = "@jetty//image:image.tar", - directory = "/jetty/webapps", - files = ["//:helloworld.war"], - workdir = "/jetty", -) - -docker_push( - name = "push", - image = ":image.tar", - registry = "gcr.io", - repository = "convoy-adapter/bazel-examples", - tag = "helloworld-bazel", -) \ No newline at end of file