mirror of
https://github.com/logos-blockchain/logos-blockchain-pocs.git
synced 2026-01-09 08:33:09 +00:00
110 lines
3.7 KiB
Docker
110 lines
3.7 KiB
Docker
FROM hexpm/elixir:1.17.3-erlang-27.1-alpine-3.20.3 AS builder-deps
|
|
|
|
WORKDIR /app
|
|
|
|
RUN apk --no-cache --update add \
|
|
alpine-sdk gmp-dev automake libtool inotify-tools autoconf python3 file gcompat libstdc++ curl ca-certificates git make
|
|
|
|
# Cache elixir deps
|
|
COPY mix.exs mix.lock ./
|
|
COPY apps/block_scout_web/mix.exs ./apps/block_scout_web/
|
|
COPY apps/explorer/mix.exs ./apps/explorer/
|
|
COPY apps/ethereum_jsonrpc/mix.exs ./apps/ethereum_jsonrpc/
|
|
COPY apps/indexer/mix.exs ./apps/indexer/
|
|
COPY apps/utils/mix.exs ./apps/utils/
|
|
|
|
ENV MIX_ENV="prod"
|
|
ENV MIX_HOME=/opt/mix
|
|
RUN mix local.hex --force
|
|
RUN mix do deps.get, local.rebar --force, deps.compile --skip-umbrella-children
|
|
|
|
COPY config ./config
|
|
COPY rel ./rel
|
|
COPY apps ./apps
|
|
|
|
##############################################################
|
|
FROM builder-deps AS builder-ui
|
|
|
|
RUN apk --no-cache --update add nodejs npm && \
|
|
npm install npm@latest
|
|
|
|
# Add blockscout npm deps
|
|
RUN cd apps/block_scout_web/assets/ && \
|
|
npm install && \
|
|
npm run deploy && \
|
|
cd /app/apps/explorer/ && \
|
|
npm install
|
|
|
|
RUN cd apps/block_scout_web && mix phx.digest
|
|
|
|
##############################################################
|
|
FROM builder-ui AS builder
|
|
|
|
ENV DISABLE_WEBAPP=false
|
|
ARG ADMIN_PANEL_ENABLED
|
|
ENV ADMIN_PANEL_ENABLED=${ADMIN_PANEL_ENABLED}
|
|
ARG DISABLE_API
|
|
ENV DISABLE_API=${DISABLE_API}
|
|
ARG API_V1_READ_METHODS_DISABLED
|
|
ENV API_V1_READ_METHODS_DISABLED=${API_V1_READ_METHODS_DISABLED}
|
|
ARG API_V1_WRITE_METHODS_DISABLED
|
|
ENV API_V1_WRITE_METHODS_DISABLED=${API_V1_WRITE_METHODS_DISABLED}
|
|
ARG CHAIN_TYPE
|
|
ENV CHAIN_TYPE=${CHAIN_TYPE}
|
|
ARG BRIDGED_TOKENS_ENABLED
|
|
ENV BRIDGED_TOKENS_ENABLED=${BRIDGED_TOKENS_ENABLED}
|
|
ARG API_GRAPHQL_MAX_COMPLEXITY
|
|
ENV API_GRAPHQL_MAX_COMPLEXITY=${API_GRAPHQL_MAX_COMPLEXITY}
|
|
|
|
# Run backend compilation
|
|
RUN mix compile
|
|
|
|
RUN mkdir -p /opt/release && \
|
|
mix release blockscout && \
|
|
mv _build/${MIX_ENV}/rel/blockscout /opt/release
|
|
|
|
##############################################################
|
|
FROM hexpm/elixir:1.17.3-erlang-27.1-alpine-3.20.3
|
|
|
|
WORKDIR /app
|
|
|
|
ARG BLOCKSCOUT_USER=blockscout
|
|
ARG BLOCKSCOUT_GROUP=blockscout
|
|
ARG BLOCKSCOUT_UID=10001
|
|
ARG BLOCKSCOUT_GID=10001
|
|
|
|
RUN apk --no-cache --update add jq curl && \
|
|
addgroup --system --gid ${BLOCKSCOUT_GID} ${BLOCKSCOUT_GROUP} && \
|
|
adduser --system --uid ${BLOCKSCOUT_UID} --ingroup ${BLOCKSCOUT_GROUP} --disabled-password ${BLOCKSCOUT_USER}
|
|
|
|
ENV DISABLE_WEBAPP=false
|
|
ARG ADMIN_PANEL_ENABLED
|
|
ENV ADMIN_PANEL_ENABLED=${ADMIN_PANEL_ENABLED}
|
|
ARG DISABLE_API
|
|
ENV DISABLE_API=${DISABLE_API}
|
|
ARG API_V1_READ_METHODS_DISABLED
|
|
ENV API_V1_READ_METHODS_DISABLED=${API_V1_READ_METHODS_DISABLED}
|
|
ARG API_V1_WRITE_METHODS_DISABLED
|
|
ENV API_V1_WRITE_METHODS_DISABLED=${API_V1_WRITE_METHODS_DISABLED}
|
|
ARG CHAIN_TYPE
|
|
ENV CHAIN_TYPE=${CHAIN_TYPE}
|
|
ARG BRIDGED_TOKENS_ENABLED
|
|
ENV BRIDGED_TOKENS_ENABLED=${BRIDGED_TOKENS_ENABLED}
|
|
ARG API_GRAPHQL_MAX_COMPLEXITY
|
|
ENV API_GRAPHQL_MAX_COMPLEXITY=${API_GRAPHQL_MAX_COMPLEXITY}
|
|
|
|
ARG RELEASE_VERSION
|
|
ENV RELEASE_VERSION=${RELEASE_VERSION}
|
|
ARG BLOCKSCOUT_VERSION
|
|
ENV BLOCKSCOUT_VERSION=${BLOCKSCOUT_VERSION}
|
|
|
|
COPY --from=builder --chown=${BLOCKSCOUT_USER}:${BLOCKSCOUT_GROUP} /opt/release/blockscout .
|
|
COPY --from=builder --chown=${BLOCKSCOUT_USER}:${BLOCKSCOUT_GROUP} /app/apps/explorer/node_modules ./node_modules
|
|
COPY --from=builder --chown=${BLOCKSCOUT_USER}:${BLOCKSCOUT_GROUP} /app/config/config_helper.exs ./config/config_helper.exs
|
|
COPY --from=builder --chown=${BLOCKSCOUT_USER}:${BLOCKSCOUT_GROUP} /app/config/config_helper.exs /app/releases/${RELEASE_VERSION}/config_helper.exs
|
|
COPY --from=builder --chown=${BLOCKSCOUT_USER}:${BLOCKSCOUT_GROUP} /app/config/assets/precompiles-arbitrum.json ./config/assets/precompiles-arbitrum.json
|
|
|
|
RUN chown -R ${BLOCKSCOUT_USER}:${BLOCKSCOUT_GROUP} /app
|
|
|
|
USER ${BLOCKSCOUT_USER}:${BLOCKSCOUT_GROUP}
|