|
1 | | -FROM hyperledger/fabric-baseimage:amd64-0.4.14 |
| 1 | +FROM hyperledger/fabric-baseimage:amd64-0.4.14 as builder |
2 | 2 | RUN apt-get update |
3 | 3 | RUN apt-get install zip -y |
4 | | -RUN curl -s "https://get.sdkman.io" | bash |
| 4 | +RUN curl -s "https://get.sdkman.io" | bash |
5 | 5 |
|
6 | 6 | SHELL ["/bin/bash", "-c"] |
7 | 7 |
|
8 | | -# Install gradle and maven |
9 | 8 | RUN source /root/.sdkman/bin/sdkman-init.sh; sdk install gradle 4.6 |
10 | 9 | RUN source /root/.sdkman/bin/sdkman-init.sh; sdk install maven 3.5.0 |
11 | 10 |
|
| 11 | +FROM hyperledger/fabric-baseimage:amd64-0.4.14 as dependencies |
| 12 | +COPY --from=builder /root/.sdkman/candidates/gradle/current /usr/bin/gradle |
| 13 | +COPY --from=builder /root/.sdkman/candidates/maven/current /usr/bin/maven |
| 14 | + |
| 15 | +ENV PATH="/usr/bin/maven/bin:/usr/bin/maven/:/usr/bin/gradle:/usr/bin/gradle/bin:${PATH}" |
| 16 | + |
12 | 17 | # Coping libs, scripts and sources |
13 | 18 | ADD build/distributions/ /root/ |
14 | 19 |
|
15 | 20 | #Creating folders structure |
16 | 21 | RUN mkdir -p /root/chaincode-java/chaincode/src |
17 | 22 | RUN mkdir -p /root/chaincode-java/chaincode/build/out |
18 | | -RUN mkdir -p /chaincode/input |
19 | | -RUN mkdir -p /chaincode/output |
20 | 23 |
|
21 | 24 | #Making scripts runnable |
22 | 25 | RUN chmod +x /root/chaincode-java/start |
23 | 26 | RUN chmod +x /root/chaincode-java/build.sh |
24 | 27 |
|
25 | 28 | # Start build shim jars |
26 | 29 | WORKDIR /root/chaincode-java/shim-src |
27 | | -RUN source /root/.sdkman/bin/sdkman-init.sh; gradle clean |
| 30 | +RUN gradle clean |
28 | 31 |
|
29 | 32 | # Building protobuf jar and installing it to maven local and gradle cache |
30 | 33 | WORKDIR /root/chaincode-java/shim-src/fabric-chaincode-protos |
31 | | -RUN source /root/.sdkman/bin/sdkman-init.sh; gradle clean build install publishToMavenLocal |
| 34 | +RUN gradle clean build install publishToMavenLocal |
32 | 35 | # Installing all jar dependencies to maven local |
33 | 36 | WORKDIR /root/chaincode-java/shim-src/fabric-chaincode-protos/build/publications/protosJar/ |
34 | | -RUN source /root/.sdkman/bin/sdkman-init.sh; mvn -f pom-default.xml compile |
| 37 | +RUN mvn -f pom-default.xml compile |
35 | 38 |
|
36 | 39 | # Building shim jar and installing it to maven local and gradle cache |
37 | 40 | WORKDIR /root/chaincode-java/shim-src/fabric-chaincode-shim |
38 | | -RUN source /root/.sdkman/bin/sdkman-init.sh; gradle clean build install publishToMavenLocal |
| 41 | +RUN gradle clean build install publishToMavenLocal |
39 | 42 | # Installing all jar dependencies to maven local |
40 | 43 | WORKDIR /root/chaincode-java/shim-src/fabric-chaincode-shim/build/publications/shimJar/ |
41 | | -RUN source /root/.sdkman/bin/sdkman-init.sh; mvn -f pom-default.xml compile |
| 44 | +RUN mvn -f pom-default.xml compile |
42 | 45 |
|
43 | 46 | # Sanity check and maven/gradle plugin installs - compiling sample chaincode - gradle and maven |
44 | 47 | WORKDIR /root/chaincode-java/example-src/fabric-chaincode-example-gradle |
45 | | -RUN source /root/.sdkman/bin/sdkman-init.sh; gradle build shadowJar |
| 48 | +RUN gradle build shadowJar |
46 | 49 | WORKDIR /root/chaincode-java/example-src/fabric-chaincode-example-maven |
47 | | -RUN source /root/.sdkman/bin/sdkman-init.sh; mvn compile package |
| 50 | +RUN mvn compile package |
48 | 51 | WORKDIR /root/chaincode-java |
49 | 52 |
|
50 | 53 | #Removing non-needed sources |
51 | | -RUN rm -rf example-src/* |
| 54 | +RUN rm -rf example-src |
52 | 55 | RUN rm -rf shim-src |
| 56 | + |
| 57 | +# Creating final javaenv image which will include all required |
| 58 | +# dependencies to build and compile java chaincode |
| 59 | +FROM hyperledger/fabric-baseimage:amd64-0.4.14 |
| 60 | +COPY --from=builder /root/.sdkman/candidates/gradle/current /usr/bin/gradle |
| 61 | +COPY --from=builder /root/.sdkman/candidates/maven/current /usr/bin/maven |
| 62 | + |
| 63 | +ENV PATH="/usr/bin/maven/bin:/usr/bin/maven/:/usr/bin/gradle:/usr/bin/gradle/bin:${PATH}" |
| 64 | + |
| 65 | +COPY --from=dependencies /root/chaincode-java /root/chaincode-java |
| 66 | +COPY --from=dependencies /root/.m2 /root/.m2 |
| 67 | + |
| 68 | +RUN mkdir -p /chaincode/input |
| 69 | +RUN mkdir -p /chaincode/output |
| 70 | + |
| 71 | +WORKDIR /root/chaincode-java |
0 commit comments