From 6dd20d3d87800aca5c2d38dd0a88ad895e1dc18a Mon Sep 17 00:00:00 2001 From: Arsalan Sefidgar Date: Fri, 17 Oct 2025 12:35:56 +0330 Subject: [PATCH 1/5] [CI]: init --- .github/.gitkeep | 0 .github/workflows/workflow.yml | 25 +++++++++++++++++++++++++ Dockerfile | 21 +++++++++++++++++++++ compose.yml | 17 +++++++++++++++++ go.mod | 22 ++++++++++++++++++++++ go.sum | 29 +++++++++++++++++++++++++++++ 6 files changed, 114 insertions(+) create mode 100644 .github/.gitkeep create mode 100644 .github/workflows/workflow.yml create mode 100644 Dockerfile create mode 100644 compose.yml create mode 100644 go.mod create mode 100644 go.sum diff --git a/.github/.gitkeep b/.github/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml new file mode 100644 index 0000000..3350373 --- /dev/null +++ b/.github/workflows/workflow.yml @@ -0,0 +1,25 @@ +name: Deploy to Production + +on: + push: + branches: + - main + +env: + IMAGE_NAME: myip + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push + uses: docker/build-push-action@v6 + with: + push: true + file: ./Dockerfile + tags: | + ttl.sh/${{ env.IMAGE_NAME }}:1h diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..788c823 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM golang:1.20-alpine AS builder + +WORKDIR /app + +COPY go.mod go.sum ./ + +RUN go mod download + +COPY main.go . + +RUN go build -o main . + +FROM alpine:3 + +WORKDIR /app + +COPY --from=builder /app/main . + +EXPOSE 3000 + +CMD ["./main"] diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..120090f --- /dev/null +++ b/compose.yml @@ -0,0 +1,17 @@ +services: + myip: + image: ttl.sh/myip:${TAG:-latest} + restart: unless-stopped + env_file: ".env" + networks: + - web + labels: + - "traefik.enable=true" + - "traefik.docker.network=web" + - "traefik.http.routers.myip.entrypoints=http" + - "traefik.http.routers.myip.rule=Host(`myip.example.com`)" + - "traefik.http.services.myip.loadbalancer.server.port=3000" + +networks: + web: + external: true diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..8bcb48b --- /dev/null +++ b/go.mod @@ -0,0 +1,22 @@ +module MyIP + +go 1.20 + +require ( + github.com/gofiber/fiber/v2 v2.52.9 + github.com/joho/godotenv v1.5.1 +) + +require ( + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.51.0 // indirect + github.com/valyala/tcplisten v1.0.0 // indirect + golang.org/x/sys v0.28.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..1ac26d0 --- /dev/null +++ b/go.sum @@ -0,0 +1,29 @@ +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/gofiber/fiber/v2 v2.52.9 h1:YjKl5DOiyP3j0mO61u3NTmK7or8GzzWzCFzkboyP5cw= +github.com/gofiber/fiber/v2 v2.52.9/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA= +github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g= +github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= From 0e74c4a2c9dae54df75a591a094134bb2ae12ab0 Mon Sep 17 00:00:00 2001 From: Arsalan Sefidgar Date: Fri, 17 Oct 2025 13:12:32 +0330 Subject: [PATCH 2/5] [CI]: add to packages --- .github/workflows/workflow.yml | 10 ++++++++-- Dockerfile | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 3350373..bf53f59 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -16,10 +16,16 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push uses: docker/build-push-action@v6 with: push: true file: ./Dockerfile - tags: | - ttl.sh/${{ env.IMAGE_NAME }}:1h + tags: ghcr.io/${{ github.repository }}:latest diff --git a/Dockerfile b/Dockerfile index 788c823..bc05e70 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ FROM golang:1.20-alpine AS builder +LABEL org.opencontainers.image.source=https://github.com/arsalanses/MyIP + WORKDIR /app COPY go.mod go.sum ./ From 96080cbb62bd039283d17fee9d2c9fb6baf5b7e7 Mon Sep 17 00:00:00 2001 From: Arsalan Sefidgar Date: Fri, 17 Oct 2025 13:14:11 +0330 Subject: [PATCH 3/5] [CI]: typo --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bc05e70..ab348a2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM golang:1.20-alpine AS builder -LABEL org.opencontainers.image.source=https://github.com/arsalanses/MyIP +LABEL org.opencontainers.image.source=https://github.com/arsalanses/myip WORKDIR /app From b08b51935b25a7f331e7a5bb47d1ff146fbd3c2e Mon Sep 17 00:00:00 2001 From: Arsalan Sefidgar Date: Fri, 17 Oct 2025 13:20:03 +0330 Subject: [PATCH 4/5] [CI]: fix repo name --- .github/workflows/workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index bf53f59..531c586 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -28,4 +28,4 @@ jobs: with: push: true file: ./Dockerfile - tags: ghcr.io/${{ github.repository }}:latest + tags: ghcr.io/${{ github.repository_owner }}/myip:latest From ebf04bd0b22a3203fbb548df93022a3c5e15872d Mon Sep 17 00:00:00 2001 From: Arsalan Sefidgar Date: Fri, 17 Oct 2025 13:24:06 +0330 Subject: [PATCH 5/5] [CI]: update compose image base --- compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose.yml b/compose.yml index 120090f..08b7b57 100644 --- a/compose.yml +++ b/compose.yml @@ -1,6 +1,6 @@ services: myip: - image: ttl.sh/myip:${TAG:-latest} + image: ghcr.io/mrdevanony/myip:latest:${TAG:-latest} restart: unless-stopped env_file: ".env" networks: