From 42a57bf284416441ae1a27e3fe7fd34563938dfd Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Fri, 25 Jul 2025 18:08:10 +0700 Subject: [PATCH] added building docker container --- .gitignore | 1 + Dockerfile | 21 +++++++++++++++++++++ docker-compose.yml | 11 +++++++++++ scm.conf.docker | 6 ++++++ scm.sh | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 scm.conf.docker create mode 100644 scm.sh diff --git a/.gitignore b/.gitignore index b23009b..9bb1d5c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ scm go.sum certs +data diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2928d72 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM golang:1.24.5-alpine AS build-stage + +WORKDIR /app + +COPY . . + +RUN apk update && \ + apk upgrade && \ + apk add binutils && \ + go mod tidy && \ + go build && \ + strip scm +FROM alpine:latest AS build-release-stage + +WORKDIR /data + +COPY --from=build-stage /app/scm /scm +RUN mkdir -p /certs +COPY scm.conf.docker /data/scm.conf + +ENTRYPOINT [ "/scm" ] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3e15c4a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +services: + scm: + build: + context: . + dockerfile: Dockerfile + container_name: scm_server + ports: + - "8777:8777" + volumes: + - ./data:/data + - ./certs:/certs diff --git a/scm.conf.docker b/scm.conf.docker new file mode 100644 index 0000000..e93df98 --- /dev/null +++ b/scm.conf.docker @@ -0,0 +1,6 @@ +ENABLE_TLS=false + +CERTS_PATH=/certs + +SERVER_ADDRESS=0.0.0.0 +SERVER_PORT=8777 diff --git a/scm.sh b/scm.sh new file mode 100644 index 0000000..25f3564 --- /dev/null +++ b/scm.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +#--- import colors and init-funcs --- +. /usr/lib/init/colors.sh +. /usr/lib/init/init-funcs.sh +#------------------------------------ + +start() { + notify "Starting scm" + /usr/bin/scm & + echo $(pgrep scm) > /var/run/scm.pid + check $? "start scm" + return $? +} + +stop() { + notify "Stopping scm" + kill $(cat /var/run/scm.pid) + check $? "stop scm" + rm /var/run/scm.pid &> /dev/null + return $? +} + +case "$1" in + start|stop|restart|reload|help) + "$1" + ;; + *) + help + return 1 +esac +return $?