Skip to content

Commit

Permalink
RA-60: WIP: Tested dockerfiles added
Browse files Browse the repository at this point in the history
  • Loading branch information
mlinnik committed Apr 23, 2024
1 parent 17c3fd2 commit 0e5c6f1
Show file tree
Hide file tree
Showing 10 changed files with 285 additions and 382 deletions.
4 changes: 3 additions & 1 deletion config/preprod/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@
"LastKnownBlockVersion-Alt": 0,
"LastKnownBlockVersion-Major": 2,
"LastKnownBlockVersion-Minor": 0,
"MinNodeVersion": "8.9.2",
"PeerSharing": true,
"Protocol": "Cardano",
"RequiresNetworkMagic": "RequiresMagic",
"ShelleyGenesisFile": "/config/shelley-genesis.json",
"ShelleyGenesisHash": "162d29c4e1cf6b8a84f2d692e67a3ac6bc7851bc3e6e4afe64d15778bed8bd86",
"TargetNumberOfActivePeers": 20,
"TargetNumberOfEstablishedPeers": 50,
"TargetNumberOfKnownPeers": 100,
"TargetNumberOfRootPeers": 100,
"TargetNumberOfRootPeers": 60,
"TraceAcceptPolicy": true,
"TraceBlockFetchClient": false,
"TraceBlockFetchDecisions": false,
Expand Down
6 changes: 3 additions & 3 deletions config/testnet/config.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"AlonzoGenesisFile": "/config/alonzo-genesis.json",
"AlonzoGenesisHash": "7e94a15f55d1e82d10f09203fa1d40f8eede58fd8066542cf6566008068ed874",
"AlonzoGenesisHash": "6e39cafb2eda850e141e1d1aa6d6a72172a3b71a4ecb4c582d1aaff611635741",
"ByronGenesisFile": "/config/byron-genesis.json",
"ByronGenesisHash": "83de1d7302569ad56cf9139a41e2e11346d4cb4a31c00142557b6ab3fa550761",
"ConwayGenesisFile": "/config/conway-genesis.json",
"ConwayGenesisHash": "de609b281cb3d8ae91a9d63a00c87092975612d603aa54c0f1c6a781e33d6e1e",
"ConwayGenesisHash": "50d564452b77fadcf94a5e3130c1b53c62ed30e4dc6c4db1beb4dbc2c02f56ce",
"EnableP2P": true,
"ExperimentalHardForksEnabled": false,
"ExperimentalProtocolsEnabled": false,
Expand All @@ -14,7 +14,7 @@
"Protocol": "Cardano",
"RequiresNetworkMagic": "RequiresMagic",
"ShelleyGenesisFile": "/config/shelley-genesis.json",
"ShelleyGenesisHash": "363498d1024f84bb39d3fa9593ce391483cb40d479b87233f868d6e57c3a400d",
"ShelleyGenesisHash": "bc8e8982b147e4955a8c96ba88fef03853b9ee6901680dc7850a810b4883ca3a",
"TargetNumberOfActivePeers": 20,
"TargetNumberOfEstablishedPeers": 50,
"TargetNumberOfKnownPeers": 100,
Expand Down
51 changes: 51 additions & 0 deletions docker/.env.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
LOG=INFO
NETWORK=preprod
# mainnet, preprod, testnet, devkit
PROTOCOL_MAGIC=1
# mainnet 764824073, preprod 1, testnet 2, devkit 42
NETWORK_MAGIC=${PROTOCOL_MAGIC}

#common env
DB_USER=rosetta_db_admin
DB_SECRET=weakpwd#123_d

# Postgres variables
DB_NAME=rosetta-java-preprod
DB_HOST=localhost
DB_PORT=5432
DB_SCHEMA=${NETWORK}

# Cardano Node variables
CARDANO_NODE_HOST=localhost
CARDANO_NODE_PORT=3001
CARDANO_NODE_VERSION=8.9.0
CARDANO_NODE_SUBMIT_HOST=cardano-submit-api
NODE_SUBMIT_API_PORT=8090
CARDANO_NODE_SOCKET=/ipc/node.socket

# api env
API_SPRING_PROFILES_ACTIVE=dev
API_PORT=8081
TRANSACTION_TTL=3000

DB_CONNECTION_PARAMS_PROVIDER_TYPE=ENVIRONMENT
DB_DRIVER_CLASS_NAME=org.postgresql.Driver

ROSETTA_VERSION=1.4.13
TOPOLOGY_FILEPATH=/config/topology.json
GENESIS_SHELLEY_PATH=/config/shelley-genesis.json
GENESIS_BYRON_PATH=/config/byron-genesis.json
GENESIS_ALONZO_PATH=/config/alonzo-genesis.json
GENESIS_CONWAY_PATH=/config/conway-genesis.json
API_NODE_SOCKET_PATH=./node/node.socket

PRINT_EXCEPTION=true

#api env
YACI_SPRING_PROFILES=postgres
INDEXER_NODE_PORT=3001
MEMPOOL_ENABLED=true

#Devkit
HOST_N2C_SOCAT_PORT=3333
DEVKIT_ENABLED=true
175 changes: 42 additions & 133 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
ARG NETWORK="preprod"

FROM ubuntu:24.04 AS cardano-builder
FROM ubuntu:22.04 AS cardano-builder

ARG CABAL_VERSION=3.8.1.0
ARG GHC_VERSION=8.10.7
ARG CARDANO_NODE_VERSION=8.9.2
ARG NETWORK

WORKDIR /root
WORKDIR /root/src

# Install dependencies
RUN apt-get update --fix-missing
Expand All @@ -16,15 +13,13 @@ RUN apt -y --no-install-recommends install \
automake build-essential pkg-config libffi-dev libgmp-dev libssl-dev libncurses-dev libsystemd-dev zlib1g-dev make \
g++ tmux git jq wget libncursesw5-dev libtool autoconf liblmdb-dev curl ca-certificates

WORKDIR /root/src

# Install ghcup
ENV BOOTSTRAP_HASKELL_NONINTERACTIVE=1
RUN bash -c "curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh"

# Add ghcup to PATH
ENV PATH=${PATH}:/root/.local/bin
ENV PATH=${PATH}:/root/.ghcup/bin

#RUN bash -c "ghcup upgrade"
ENV PATH=/root/.local/bin:/root/.ghcup/bin:/root/.cabal/bin:${PATH}

# Install cabal
RUN bash -c "ghcup install cabal ${CABAL_VERSION}"
Expand All @@ -34,29 +29,7 @@ RUN bash -c "ghcup set cabal ${CABAL_VERSION}"
RUN bash -c "ghcup install ghc ${GHC_VERSION}"
RUN bash -c "ghcup set ghc ${GHC_VERSION}"

# Cabal
#ENV CABAL_VERSION=${CABAL_VERSION}
#ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:/root/.local/bin:$PATH"
#RUN wget https://downloads.haskell.org/~cabal/cabal-install-${CABAL_VERSION}/cabal-install-${CABAL_VERSION}-$(uname -m)-linux-ubuntu20_04.tar.xz \
# && tar -xf cabal-install-${CABAL_VERSION}-$(uname -m)-linux-ubuntu20_04.tar.xz \
# && rm cabal-install-${CABAL_VERSION}-$(uname -m)-linux-ubuntu20_04.tar.xz \
# && mkdir -p ~/.local/bin \
# && mv cabal ~/.local/bin/ \
# && cabal update && cabal --version
#
## GHC
#ENV GHC_VERSION=${GHC_VERSION}
#RUN wget https://downloads.haskell.org/~ghc/${GHC_VERSION}/ghc-${GHC_VERSION}-$(uname -m)-deb10-linux.tar.xz \
# && tar -xf ghc-${GHC_VERSION}-$(uname -m)-deb10-linux.tar.xz \
# && rm ghc-${GHC_VERSION}-$(uname -m)-deb10-linux.tar.xz \
# && cd ghc-${GHC_VERSION} \
# && ./configure \
# && make install


WORKDIR /root/src

#Install sodium
# Install sodium
RUN export IOHKNIX_VERSION=$(curl https://raw.githubusercontent.com/IntersectMBO/cardano-node/$CARDANO_NODE_VERSION/flake.lock | jq -r '.nodes.iohkNix.locked.rev') \
&& echo "iohk-nix version: $IOHKNIX_VERSION" \
&& export SODIUM_VERSION=$(curl https://raw.githubusercontent.com/input-output-hk/iohk-nix/$IOHKNIX_VERSION/flake.lock | jq -r '.nodes.sodium.original.rev') \
Expand All @@ -68,8 +41,7 @@ RUN export IOHKNIX_VERSION=$(curl https://raw.githubusercontent.com/IntersectMBO
&& ./configure \
&& make \
&& make check \
&& make install \
&& cd ..
&& make install

ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
Expand All @@ -88,8 +60,7 @@ RUN export IOHKNIX_VERSION=$(curl https://raw.githubusercontent.com/IntersectMBO
&& ./configure --enable-module-schnorrsig --enable-experimental \
&& make \
&& make check \
&& make install \
&& cd ..
&& make install

# Install blst
RUN export BLST_VERSION=$(curl https://raw.githubusercontent.com/input-output-hk/iohk-nix/master/flake.lock | jq -r '.nodes.blst.original.ref') \
Expand All @@ -110,16 +81,13 @@ RUN export BLST_VERSION=$(curl https://raw.githubusercontent.com/input-output-hk
&& cp libblst.pc /usr/local/lib/pkgconfig/ \
&& cp bindings/blst_aux.h bindings/blst.h bindings/blst.hpp /usr/local/include/ \
&& cp libblst.a /usr/local/lib \
&& bash -c "chmod u=rw,go=r /usr/local/{lib/{libblst.a,pkgconfig/libblst.pc},include/{blst.{h,hpp},blst_aux.h}}" \
&& cd ..
&& bash -c "chmod u=rw,go=r /usr/local/{lib/{libblst.a,pkgconfig/libblst.pc},include/{blst.{h,hpp},blst_aux.h}}"

RUN apt -y --no-install-recommends install libsecp256k1-dev

#Install node
# Install node
RUN git clone https://github.com/intersectmbo/cardano-node.git \
&& cd cardano-node \
# && git fetch --all --recurse-submodules --tags \
# && git tag | sort -V \
&& git checkout tags/$CARDANO_NODE_VERSION \
&& echo "with-compiler: ghc-$GHC_VERSION" >> cabal.project.local \
&& echo "" >> cabal.project.local \
Expand All @@ -142,66 +110,12 @@ RUN bash -c "cabal update"
RUN bash -c "cabal build all"
RUN bash -c "cabal build cardano-cli"

RUN mkdir -p ~/.local/bin \
&& cp -p "$(./scripts/bin-path.sh cardano-node)" ~/.local/bin/ \
&& cp -p "$(./scripts/bin-path.sh cardano-cli)" ~/.local/bin/ \
&& cd ..

FROM maven:3.9.6-sapmachine-21 AS build-common

ARG NETWORK
ARG DB_HOST="localhjost"
ARG DB_PORT="5432"
ARG DB_NAME="rosetta-java-preprod"
ARG DB_ADMIN_USER_NAME="rosetta_db_admin"
ARG DB_ADMIN_USER_SECRET="weakpwd#123_d"
ARG DB_DRIVER_CLASS_NAME="org.postgresql.Driver"
ARG API_PORT=8081
ARG CARDANO_NODE_VERSION="8.9.0"
ARG API_SPRING_PROFILES_ACTIVE_API="dev"
ARG DB_CONNECTION_PARAMS_PROVIDER_TYPE="ENVIRONMENT"
ARG PROTOCOL_MAGIC=1
ARG TRANSACTION_TTL=3000
ARG TOPOLOGY_FILEPATH=/config/${NETWORK}/topology.json
ARG GENESIS_SHELLEY_PATH=/config/${NETWORK}/shelley-genesis.json
ARG NODE_SUBMIT_API_PORT=8090
ARG CARDANO_NODE_SUBMIT_HOST="cardano-submit-api"
ARG DEVKIT_ENABLED=false
ARG DEVKIT_URL=yaci-cli
ARG HOST_N2C_SOCAT_PORT=3333
ARG CARDANO_NODE_HOST="cardano-node"
ARG CARDANO_NODE_PORT="3001"
ARG GENESIS_BYRON_PATH=/config/${NETWORK}/byron-genesis.json
ARG GENESIS_ALONZO_PATH=/config/${NETWORK}/alonzo-genesis.json
ARG GENESIS_CONWAY_PATH=/config/${NETWORK}/conway-genesis.json

ENV NETWORK="${NETWORK}"
ENV DB_HOST="${DB_HOST}"
ENV DB_PORT="${DB_PORT}"
ENV DB_NAME="${DB_NAME}"
ENV DB_USER="${DB_ADMIN_USER_NAME}"
ENV DB_SECRET="${DB_ADMIN_USER_SECRET}"
ENV DB_DRIVER_CLASS_NAME="${DB_DRIVER_CLASS_NAME}"
ENV API_PORT=${API_PORT}
ENV CARDANO_NODE_VERSION=${CARDANO_NODE_VERSION}
ENV API_SPRING_PROFILES_ACTIVE=${API_SPRING_PROFILES_ACTIVE_API}
ENV DB_CONNECTION_PARAMS_PROVIDER_TYPE=${DB_CONNECTION_PARAMS_PROVIDER_TYPE}
ENV PROTOCOL_MAGIC=${PROTOCOL_MAGIC}
ENV NETWORK_MAGIC=${PROTOCOL_MAGIC}
ENV TRANSACTION_TTL=${TRANSACTION_TTL}
ENV TOPOLOGY_FILEPATH=${TOPOLOGY_FILEPATH}
ENV GENESIS_SHELLEY_PATH=${GENESIS_SHELLEY_PATH}
ENV NODE_SUBMIT_API_PORT=${NODE_SUBMIT_API_PORT}
ENV CARDANO_NODE_SUBMIT_HOST=${CARDANO_NODE_SUBMIT_HOST}
ENV CARDANO_NODE_SOCKET=/ipc/node.socket
ENV DEVKIT_ENABLED=${DEVKIT_ENABLED}
ENV DEVKIT_URL=${DEVKIT_URL}
ENV DEVKIT_PORT=${HOST_N2C_SOCAT_PORT}
ENV CARDANO_NODE_HOST: "${CARDANO_NODE_HOST}"
ENV CARDANO_NODE_PORT: "${INDEXER_NODE_PORT}"
ENV GENESIS_BYRON_PATH: "${GENESIS_BYRON_PATH}"
ENV GENESIS_ALONZO_PATH: "${GENESIS_ALONZO_PATH}"
ENV GENESIS_CONWAY_PATH: "${GENESIS_CONWAY_PATH}"
RUN mkdir -p /root/.local/bin \
&& cp -p "$(./scripts/bin-path.sh cardano-node)" /root/.local/bin/ \
&& cp -p "$(./scripts/bin-path.sh cardano-cli)" /root/.local/bin/

# Compile java applications
FROM maven:3.9.6-sapmachine-21 AS java-builder

WORKDIR /root/app

Expand All @@ -218,55 +132,50 @@ COPY ./test-data-generator /root/app/test-data-generator

RUN --mount=type=cache,target=/root/.m2 mvn clean package -DskipTests

# Main
FROM eclipse-temurin:21-jdk

ARG NETWORK
WORKDIR /

# Install postgres
ARG PG_VERSION=11

ARG DB_ADMIN_USER_NAME="rosetta_db_admin"
ARG DB_ADMIN_USER_SECRET="weakpwd#123_d"
RUN apt-get update --fix-missing \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y wget sudo gnupg \
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
&& echo 'deb http://apt.postgresql.org/pub/repos/apt/ jammy-pgdg main' >> /etc/apt/sources.list

ARG DB_NAME="rosetta-java-preprod"
ARG DB_PORT="5432"
ARG DB_SCHEMA=${NETWORK}
RUN apt-get update --fix-missing \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
postgresql-${PG_VERSION}

ARG CARDANO_CONFIG="./config/${NETWORK}"
RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/$PG_VERSION/main/pg_hba.conf
RUN echo "listen_addresses='*'" >> /etc/postgresql/$PG_VERSION/main/postgresql.conf

# Copy cardano node
COPY --from=cardano-builder /usr/local/lib /usr/local/lib
COPY --from=cardano-builder /root/.local/bin/cardano-* /usr/local/bin/

COPY ${CARDANO_CONFIG} /config
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
ENV PATH=/usr/local/lib/:$PATH

COPY ./config /config_bck
RUN mkdir /config

RUN mkdir -p /data/db
RUN mkdir /ipc

COPY --from=build-common /root/app/api/target/*.jar /root/api/app.jar
COPY --from=build-common /root/app/yaci-indexer/target/*.jar /root/yaci-indexer/app.jar

WORKDIR /root

RUN apt-get update --fix-missing \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y wget gnupg \
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
&& echo 'deb http://apt.postgresql.org/pub/repos/apt/ jammy-pgdg main' >> /etc/apt/sources.list

RUN apt-get update --fix-missing \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends sudo \
postgresql-${PG_VERSION}

ENV DB_ADMIN_USER_NAME=$DB_ADMIN_USER_NAME
ENV DB_ADMIN_USER_SECRET=$DB_ADMIN_USER_SECRET

ENV DB_NAME=$DB_NAME
ENV DB_PORT=$DB_PORT
ENV DB_SCHEMA=$NETWORK
# Copy jars
COPY --from=java-builder /root/app/api/target/*.jar /api/app.jar
COPY --from=java-builder /root/app/yaci-indexer/target/*.jar /yaci-indexer/app.jar

ENV PG_USER="postgres"
# Run
RUN mkdir /logs

EXPOSE 5432 3001 12788 12798
EXPOSE 8081
#EXPOSE 8081 5432 3001 12788 12798

COPY docker/entrypoint.sh /sbin/entrypoint.sh
COPY ./docker/entrypoint.sh /sbin/entrypoint.sh
ENTRYPOINT ["/sbin/entrypoint.sh"]

CMD ["/bin/sh", "-c", "bash"]

0 comments on commit 0e5c6f1

Please sign in to comment.