first try
This commit is contained in:
29
sonic.yml
Normal file
29
sonic.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
version: "3.1"
|
||||||
|
services:
|
||||||
|
sonic:
|
||||||
|
build:
|
||||||
|
context: ./sonic
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
stop_grace_period: 3m
|
||||||
|
volumes:
|
||||||
|
- "sonic:/var/sonic"
|
||||||
|
expose:
|
||||||
|
- "18544"
|
||||||
|
- "19921"
|
||||||
|
ports:
|
||||||
|
- "19921:19921"
|
||||||
|
- "19921:19921/udp"
|
||||||
|
networks:
|
||||||
|
- chains
|
||||||
|
restart: unless-stopped
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.middlewares.sonic-stripprefix.stripprefix.prefixes=/sonic"
|
||||||
|
- "traefik.http.services.sonic.loadbalancer.server.port=18544"
|
||||||
|
- "traefik.http.routers.sonic.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.sonic.tls.certresolver=myresolver"
|
||||||
|
- "traefik.http.routers.sonic.rule=Host(`$DOMAIN`) && PathPrefix(`/sonic`)"
|
||||||
|
- "traefik.http.routers.sonic.middlewares=sonic-stripprefix, ipwhitelist"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
sonic:
|
||||||
31
sonic/Dockerfile
Normal file
31
sonic/Dockerfile
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Running Sonic in Docker is Experimental - not recommended for production use!
|
||||||
|
|
||||||
|
# Example of usage:
|
||||||
|
# docker build -t sonic .
|
||||||
|
# docker run --name sonic1 --entrypoint sonictool sonic --datadir=/var/sonic genesis fake 1
|
||||||
|
# docker run --volumes-from sonic1 -p 5050:5050 -p 5050:5050/udp -p 18545:18545 sonic --fakenet 1/1 --http --http.addr=0.0.0.0
|
||||||
|
|
||||||
|
FROM golang:1.22 as builder
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y git musl-dev make
|
||||||
|
|
||||||
|
RUN cd /go && git clone https://github.com/Fantom-foundation/Sonic.git && git fetch --tags && git checkout -b v2.0.1 tags/v2.0.1
|
||||||
|
|
||||||
|
WORKDIR /go/Sonic
|
||||||
|
|
||||||
|
ARG GOPROXY
|
||||||
|
RUN go mod download
|
||||||
|
RUN make all
|
||||||
|
|
||||||
|
FROM golang:1.22
|
||||||
|
|
||||||
|
COPY --from=builder /go/Sonic/build/sonicd /usr/local/bin/
|
||||||
|
COPY --from=builder /go/Sonic/build/sonictool /usr/local/bin/
|
||||||
|
|
||||||
|
COPY ./entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
EXPOSE 18545 18546 5050 5050/udp
|
||||||
|
|
||||||
|
VOLUME /var/sonic
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash", "entrypoint.sh"]
|
||||||
25
sonic/entrypoint.sh
Normal file
25
sonic/entrypoint.sh
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ ! -f /var/sonic/initialized ]; then
|
||||||
|
echo "Initializing Sonic..."
|
||||||
|
|
||||||
|
# Add your initialization commands here
|
||||||
|
# Example:
|
||||||
|
# mkdir -p /var/sonic/data
|
||||||
|
# touch /var/sonic/config.json
|
||||||
|
|
||||||
|
wget https://genesis.soniclabs.com/sonic-mainnet/genesis/sonic.g.md5
|
||||||
|
GOMEMLIMIT=50GiB sonictool --datadir /var/sonic --cache 12000 genesis sonic.g.md5
|
||||||
|
rm sonic.g
|
||||||
|
|
||||||
|
# Create the file to mark initialization
|
||||||
|
touch /var/sonic/initialized
|
||||||
|
|
||||||
|
echo "Initialization complete."
|
||||||
|
else
|
||||||
|
echo "Sonic is already initialized."
|
||||||
|
fi
|
||||||
|
|
||||||
|
touch /var/sonic/initialized
|
||||||
|
|
||||||
|
exec sonicd --datadir /var/sonic "$@"
|
||||||
Reference in New Issue
Block a user