11# build zokrates from source for local verify
22FROM rust:1.53.0 as builder
3-
43WORKDIR /app
54COPY . .
65RUN git clone --depth 1 --branch 0.8.8 https://github.com/Zokrates/ZoKrates /app/zoKratesv0.8.8
76WORKDIR /app/zoKratesv0.8.8
87RUN rustup install nightly-2022-06-28
98RUN cargo +nightly-2022-06-28 build -p zokrates_cli --release
10-
119# Copy the built result into /app/zoKrates
1210RUN cp -r /app/zoKratesv0.8.8 /app/zoKrates
1311
14-
1512FROM ubuntu:24.10
16-
1713ENV USERNAME="app"
18-
1914WORKDIR /app
20-
2115# Install NodeJs
2216RUN apt-get update && \
2317 apt-get install -y netcat-traditional curl && \
2418 curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
25- apt-get install -y nodejs gcc g++ make
26-
19+ apt-get install -y nodejs gcc g++ make && \
20+ mkdir /npm-cache
21+ # Setup environment variables
2722ENV npm_config_cache=/npm-cache
2823ENV ZOKRATES_HOME /app
2924ENV ZOKRATES_STDLIBv8 /app/stdlibv8
3025ENV ZOKRATES_STDLIB /app/stdlib
31-
26+ # Copy app files
3227COPY config/default.js config/default.js
3328COPY package.json package-lock.json ./
3429COPY --from=builder /app/zoKratesv0.8.8/zokrates_stdlib/stdlib /app/stdlibv8
@@ -38,16 +33,13 @@ COPY --from=builder /app/zoKrates/target/release/zokrates /app/zokrates
3833COPY src ./src
3934COPY start-script ./start-script
4035COPY start-dev ./start-dev
41-
36+ # Install npm packages as root
4237RUN npm i
43-
44- USER $USERNAME:$USERNAME
45-
46- # Install NodeJs
38+ # Change/Add permission to user $USERNAME
4739RUN groupadd --gid 10001 $USERNAME && \
4840 useradd --gid 10001 --uid 10001 --home /app --shell /bin/bash $USERNAME && \
49- mkdir /npm-cache && \
5041 chown -R $USERNAME:$USERNAME /app /npm-cache
51-
42+ # Switch to user $USERNAME from root
43+ USER $USERNAME:$USERNAME
5244EXPOSE 80
5345CMD npm start
0 commit comments