Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blockscout/docker/Dockerfile

85 lines
2.9 KiB

2 years ago
FROM bitwalker/alpine-elixir-phoenix:1.13 AS builder
WORKDIR /app
3 years ago
RUN apk --no-cache --update add alpine-sdk gmp-dev automake libtool inotify-tools autoconf python3 file qemu-x86_64 jq
ENV GLIBC_REPO=https://github.com/sgerrand/alpine-pkg-glibc \
GLIBC_VERSION=2.30-r0 \
PORT=4000 \
MIX_ENV="prod" \
SECRET_KEY_BASE="RMgI4C1HSkxsEjdhtGMfwAHfyT6CKWXOgzCboJflfSm4jeAlic52io05KB6mqzc5" \
PATH="$HOME/.cargo/bin:${PATH}" \
RUSTFLAGS="-C target-feature=-crt-static"
RUN set -ex && \
apk --update add libstdc++ curl ca-certificates && \
for pkg in glibc-${GLIBC_VERSION} glibc-bin-${GLIBC_VERSION}; \
do curl -sSL ${GLIBC_REPO}/releases/download/${GLIBC_VERSION}/${pkg}.apk -o /tmp/${pkg}.apk; done && \
apk add --allow-untrusted /tmp/*.apk && \
rm -v /tmp/*.apk && \
/usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib
# Get Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ARG CACHE_EXCHANGE_RATES_PERIOD
ARG DISABLE_READ_API
ARG API_PATH
ARG NETWORK_PATH
ARG DISABLE_WEBAPP
ARG DISABLE_WRITE_API
ARG CACHE_ENABLE_TOTAL_GAS_USAGE_COUNTER
ARG WOBSERVER_ENABLED
ARG ADMIN_PANEL_ENABLED
ARG CACHE_ADDRESS_WITH_BALANCES_UPDATE_INTERVAL
ARG SOCKET_ROOT
ARG COIN
# Cache elixir deps
ADD mix.exs mix.lock ./
ADD apps/block_scout_web/mix.exs ./apps/block_scout_web/
ADD apps/explorer/mix.exs ./apps/explorer/
ADD apps/ethereum_jsonrpc/mix.exs ./apps/ethereum_jsonrpc/
ADD apps/indexer/mix.exs ./apps/indexer/
Account/Watchlist/Notifications (#13) * Auth for debug Fix for Auth callback calls endless cycle * Logout from auth0 and add profile picture Fix styles in signin/signout * Add profile * Update dockerfiles * Make auth paths dependent of API_PATH * Change api_path to network_path * Save identity from auth into DB * Hardcode urls to make it work again Style fixes * Change sign_in icon * Create Watchlist together with identity * Add watchlist show * Add watchlist addresses Fix creating account on first login Make address as it should look like * Associate watchlist with addresses * Create watchlist address UI Add balance in coin (need to use right coin) * Add tokens on watchlist Fix warnings Fix topnav styles * Add watch_ and notify_ fields in WatchlistAddress * Notifications draft Style fixes Removed divider Watchlist Address Form: ERC-721 & ERC-1155 -> NFT Form style -> modal Move Auth into Account module Add any valid address to watchlist Fix profile namespace in router Fixes in build Notification Fixed insert notifications * Send Emails via SendGrid * Add AUTH0 & SENDGRID API keys to Makefile * Finish email variables Fix warnings Add links to email * Update & Delete Watchlist Addresses Fix styles Fix warnings * Authorize create/update watchlist_address Fix credo warnings * Refactoring and fix UI * Introduce sender & template ENVs * Fix credo warns * Fix formatter & dialyzer * Make Notifier main entrypoint * Fix tests * Fix comments * Hardcode auth0 callbacks for prod env Export it in dev env and it should work: ``` export AUTH0_CALLBACK_URL='http://localhost:4000/auth/auth0/callback' export AUTH0_LOGOUT_RETURN_URL='http://localhost:4000/auth/logout' ``` * Style fixes * Private tags on address/transaction/token pages * Add account logger * fix email subject * Fix token_transfers notifications * Prepare for release * Fix transaction dropdown * Remoe unwanted changes * Reset CI cache * Fix Dialyzer, gettext * Add logout_return_to_url to :ueberauth config for test env * Invalidate GA cache * Redefine sign_in_link for test env * Fix adding address with disabled checkboxes Remove testnet hardcode from prod config CI fix attempt * Add AUTH0_LOGOUT_URL env * Fix logger warning * current_user/1, check that mapping contains :current_user object before executing get_session function * Fix current_user * Final fix of current_user/1 * Introduce COIN_NAME env * Lowercase hashes in email * Style fix * Add block_url to email * Fix creating notifications for NFT * Add notifier to token_transfers import runner * Add processing transfer into Notifier * Fix token transfer summary * WIP: Account refactoring (#19) * Move Ueberauth settings to config.exs * Make AuthController more clear * Fix error when build_watchlist_notification returns nil * Set WatchlistAddressForm defaults * Style fix * Fix double send email for tokens * Style fix WatchlistController * Style fix AddWatchlistAddress * Style fix UserFromAuth * Use Logger instead AccountLogger * Credo fix * Fix AddWatchlistAddress * Fix Notifier Co-authored-by: Oleg Sovetnik <sovetnik@oblaka.biz> Co-authored-by: nikitosing <nikitosing4@mail.ru>
3 years ago
RUN HEX_HTTP_TIMEOUT=3600 mix do deps.get, local.rebar --force, deps.compile
ADD . .
COPY . .
RUN if [ "$COIN" != "" ]; then \
sed -i s/"POA"/"${COIN}"/g apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po; \
3 years ago
sed -i "/msgid \"Ether\"/{n;s/msgstr \"\"/msgstr \"${COIN}\"/g}" apps/block_scout_web/priv/gettext/default.pot; \
sed -i "/msgid \"Ether\"/{n;s/msgstr \"\"/msgstr \"${COIN}\"/g}" apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po; \
sed -i "/msgid \"ETH\"/{n;s/msgstr \"\"/msgstr \"${COIN}\"/g}" apps/block_scout_web/priv/gettext/default.pot; \
sed -i "/msgid \"ETH\"/{n;s/msgstr \"\"/msgstr \"${COIN}\"/g}" apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po; \
fi
# Run forderground build and phoenix digest
RUN mix compile && 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 && \
apk update && \
apk del --force-broken-world alpine-sdk gmp-dev automake libtool inotify-tools autoconf python3
RUN mix phx.digest
2 years ago
RUN mkdir -p /opt/release \
&& mix release blockscout \
&& mv _build/${MIX_ENV}/rel/blockscout /opt/release
##############################################################
FROM bitwalker/alpine-elixir-phoenix:1.13
WORKDIR /app
2 years ago
COPY --from=builder /opt/release/blockscout .
COPY --from=builder /app/apps/explorer/node_modules ./node_modules