master #34

Merged
emmatveev merged 2 commits from master into dev 2025-01-20 17:32:09 +03:00
11 changed files with 121 additions and 180 deletions
Showing only changes of commit 458eb738fb - Show all commits

View File

@ -5,20 +5,24 @@ services:
nginx: nginx:
image: mathwave/sprint-repo:sprint-infra-nginx-dev image: mathwave/sprint-repo:sprint-infra-nginx-dev
networks: networks:
- common-infra-nginx - common-infra-nginx-development
ports: ports:
- "80:80" - published: 80
- "443:443" target: 80
mode: host
- published: 443
target: 443
mode: host
deploy: deploy:
mode: replicated mode: replicated
replicas: 1 replicas: 1
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == development]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first # order: stop-first
postgres: postgres:
image: postgres:14-alpine3.19 image: postgres:14-alpine3.19
@ -33,13 +37,15 @@ services:
start_period: 20s start_period: 20s
timeout: 10s timeout: 10s
ports: ports:
- "5432:5432" - published: 5432
target: 5432
mode: host
deploy: deploy:
mode: replicated mode: replicated
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == development]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first order: start-first
@ -52,13 +58,15 @@ services:
MONGO_INITDB_ROOT_USERNAME: mongo MONGO_INITDB_ROOT_USERNAME: mongo
MONGO_INITDB_ROOT_PASSWORD: $MONGO_PASSWORD_DEV MONGO_INITDB_ROOT_PASSWORD: $MONGO_PASSWORD_DEV
ports: ports:
- "27017:27017" - published: 27017
target: 27017
mode: host
deploy: deploy:
mode: replicated mode: replicated
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == development]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first order: start-first
@ -68,8 +76,12 @@ services:
volumes: volumes:
- /sprint-data/rabbitmq:/var/lib/rabbitmq - /sprint-data/rabbitmq:/var/lib/rabbitmq
ports: ports:
- "5672:5672" - published: 5672
- "15672:15672" target: 5672
mode: host
- published: 15672
target: 15672
mode: host
environment: environment:
RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASSWORD_DEV RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASSWORD_DEV
deploy: deploy:
@ -77,7 +89,7 @@ services:
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == development]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first order: start-first
@ -87,14 +99,16 @@ services:
volumes: volumes:
- /sprint-data/redis:/data - /sprint-data/redis:/data
ports: ports:
- "6379:6379" - published: 6379
target: 6379
mode: host
command: redis-server --requirepass $REDIS_PASSWORD_DEV command: redis-server --requirepass $REDIS_PASSWORD_DEV
deploy: deploy:
mode: replicated mode: replicated
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == development]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first order: start-first
@ -107,12 +121,16 @@ services:
MINIO_ROOT_USER: minioadmin MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: $MINIO_PASSWORD_DEV MINIO_ROOT_PASSWORD: $MINIO_PASSWORD_DEV
ports: ports:
- "9000:9000" - published: 9000
- "9001:9001" target: 9000
mode: host
- published: 9001
target: 9001
mode: host
deploy: deploy:
mode: replicated mode: replicated
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == development]
restart_policy: restart_policy:
condition: any condition: any
update_config: update_config:
@ -132,7 +150,7 @@ services:
deploy: deploy:
mode: replicated mode: replicated
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == development]
restart_policy: restart_policy:
condition: any condition: any
update_config: update_config:
@ -144,7 +162,5 @@ volumes:
driver: local driver: local
networks: networks:
net: common-infra-nginx-development:
driver: overlay
common-infra-nginx:
external: true external: true

View File

@ -7,18 +7,22 @@ services:
networks: networks:
- common-infra-nginx - common-infra-nginx
ports: ports:
- "80:80" - published: 80
- "443:443" target: 80
mode: host
- published: 443
target: 443
mode: host
deploy: deploy:
mode: replicated mode: replicated
replicas: 1 replicas: 1
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == production]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first # order: start-first
postgres: postgres:
image: postgres:14-alpine3.19 image: postgres:14-alpine3.19
@ -33,13 +37,15 @@ services:
start_period: 20s start_period: 20s
timeout: 10s timeout: 10s
ports: ports:
- "5432:5432" - published: 5432
target: 5432
mode: host
deploy: deploy:
mode: replicated mode: replicated
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == production]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first order: start-first
@ -57,13 +63,15 @@ services:
MONGO_INITDB_ROOT_USERNAME: mongo MONGO_INITDB_ROOT_USERNAME: mongo
MONGO_INITDB_ROOT_PASSWORD: $MONGO_PASSWORD_PROD MONGO_INITDB_ROOT_PASSWORD: $MONGO_PASSWORD_PROD
ports: ports:
- "27017:27017" - published: 27017
target: 27017
mode: host
deploy: deploy:
mode: replicated mode: replicated
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == production]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first order: start-first
@ -73,8 +81,12 @@ services:
volumes: volumes:
- /sprint-data/rabbitmq:/var/lib/rabbitmq - /sprint-data/rabbitmq:/var/lib/rabbitmq
ports: ports:
- "5672:5672" - published: 5672
- "15672:15672" target: 5672
mode: host
- published: 15672
target: 15672
mode: host
environment: environment:
RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASSWORD_PROD RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASSWORD_PROD
deploy: deploy:
@ -82,7 +94,7 @@ services:
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == production]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first order: start-first
@ -92,14 +104,16 @@ services:
volumes: volumes:
- /sprint-data/redis:/data - /sprint-data/redis:/data
ports: ports:
- "6379:6379" - published: 6379
target: 6379
mode: host
command: redis-server --requirepass $REDIS_PASSWORD_PROD command: redis-server --requirepass $REDIS_PASSWORD_PROD
deploy: deploy:
mode: replicated mode: replicated
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == production]
update_config: update_config:
parallelism: 1 parallelism: 1
order: start-first order: start-first
@ -112,12 +126,16 @@ services:
MINIO_ROOT_USER: minioadmin MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: $MINIO_PASSWORD_PROD MINIO_ROOT_PASSWORD: $MINIO_PASSWORD_PROD
ports: ports:
- "9000:9000" - published: 9000
- "9001:9001" target: 9000
mode: host
- published: 9001
target: 9001
mode: host
deploy: deploy:
mode: replicated mode: replicated
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == production]
restart_policy: restart_policy:
condition: any condition: any
update_config: update_config:
@ -144,7 +162,7 @@ services:
deploy: deploy:
mode: replicated mode: replicated
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == production]
restart_policy: restart_policy:
condition: any condition: any
update_config: update_config:
@ -164,7 +182,7 @@ services:
deploy: deploy:
mode: replicated mode: replicated
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == production]
restart_policy: restart_policy:
condition: any condition: any
update_config: update_config:

View File

@ -1,39 +0,0 @@
version: '3.2'
services:
agent:
image: portainer/agent:2.11.1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
networks:
- agent_network
deploy:
mode: global
placement:
constraints: [node.platform.os == linux]
portainer:
image: portainer/portainer-ce:2.11.1
command: -H tcp://tasks.agent:9001 --tlsskipverify
ports:
- "9443:9443"
- "8888:9000"
- "8000:8000"
volumes:
- portainer_data:/data
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
volumes:
portainer_data:

View File

@ -28,7 +28,7 @@ services:
mode: replicated mode: replicated
replicas: 1 replicas: 1
placement: placement:
constraints: [node.role == manager] constraints: [node.labels.stage == production]
networks: networks:
agent_network: agent_network:

View File

@ -1,71 +0,0 @@
version: '3.3'
services:
app:
image: swarmpit/swarmpit:latest
environment:
- SWARMPIT_DB=http://db:5984
- SWARMPIT_INFLUXDB=http://influxdb:8086
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
interval: 60s
timeout: 10s
retries: 3
networks:
- net
ports:
- "888:8080"
deploy:
resources:
limits:
memory: 1024M
reservations:
memory: 512M
placement:
constraints:
- node.role == manager
db:
image: treehouses/couchdb:2.3.1
networks:
- net
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M
influxdb:
image: influxdb:1.7
networks:
- net
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M
agent:
image: swarmpit/agent:latest
environment:
- DOCKER_API_VERSION=1.35
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- net
deploy:
mode: global
labels:
swarmpit.agent: 'true'
resources:
limits:
memory: 64M
reservations:
memory: 32M
networks:
net:
driver: overlay

View File

@ -24,8 +24,8 @@ services:
reservations: reservations:
memory: 512M memory: 512M
placement: placement:
constraints: constraints: [node.labels.stage == production]
- node.role == manager
db: db:
image: treehouses/couchdb:2.3.1 image: treehouses/couchdb:2.3.1
networks: networks:

View File

@ -9,7 +9,7 @@ on:
jobs: jobs:
build: build:
name: Build name: Build
runs-on: [ dev ] runs-on: [ prod ]
steps: steps:
- name: login - name: login
run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }} run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }}
@ -23,15 +23,15 @@ jobs:
run: docker build -t mathwave/sprint-repo:gitea-runner gitea-runner run: docker build -t mathwave/sprint-repo:gitea-runner gitea-runner
push: push:
name: Push name: Push
runs-on: [ dev ] runs-on: [ prod ]
needs: build needs: build
steps: steps:
- name: push nginx dev - name: push nginx dev
run: docker push mathwave/sprint-repo:sprint-infra-nginx-dev run: docker push mathwave/sprint-repo:sprint-infra-nginx-dev
- name: push gitea runner - name: push gitea runner
run: docker push mathwave/sprint-repo:gitea-runner run: docker push mathwave/sprint-repo:gitea-runner
deploy-dev: prepare:
name: Deploy dev name: prepare
runs-on: [dev] runs-on: [dev]
needs: push needs: push
steps: steps:
@ -42,11 +42,18 @@ jobs:
with: with:
ref: dev ref: dev
- name: prepare - name: prepare
run: chmod 777 ./run.sh && ./run.sh run: chmod 777 ./prepare/run-development.sh && ./prepare/run-development.sh
- name: deploy swarmpit deploy-dev:
run: docker stack deploy --with-registry-auth -c ./.deploy-swarmpit/deploy-dev.yaml swarmpit name: Deploy dev
- name: deploy portainer runs-on: [prod]
run: docker stack deploy --with-registry-auth -c ./.deploy-portainer/deploy-dev.yaml portainer needs: prepare
steps:
- name: login
run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }}
- name: checkout
uses: actions/checkout@v4
with:
ref: dev
- name: deploy infra - name: deploy infra
env: env:
MONGO_PASSWORD_DEV: ${{ secrets.MONGO_PASSWORD_DEV }} MONGO_PASSWORD_DEV: ${{ secrets.MONGO_PASSWORD_DEV }}
@ -55,4 +62,4 @@ jobs:
REDIS_PASSWORD_DEV: ${{ secrets.REDIS_PASSWORD_DEV }} REDIS_PASSWORD_DEV: ${{ secrets.REDIS_PASSWORD_DEV }}
RABBITMQ_PASSWORD_DEV: ${{ secrets.RABBITMQ_PASSWORD_DEV }} RABBITMQ_PASSWORD_DEV: ${{ secrets.RABBITMQ_PASSWORD_DEV }}
REGISTRATION_TOKEN: ${{ secrets.REGISTRATION_TOKEN }} REGISTRATION_TOKEN: ${{ secrets.REGISTRATION_TOKEN }}
run: docker stack deploy --with-registry-auth -c ./.deploy-infra/deploy-dev.yaml infra run: docker stack deploy --with-registry-auth -c ./.deploy-infra/deploy-dev.yaml infra-development

View File

@ -9,7 +9,7 @@ on:
jobs: jobs:
build: build:
name: Build name: Build
runs-on: [ dev ] runs-on: [ prod ]
steps: steps:
- name: login - name: login
run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }} run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }}
@ -23,13 +23,26 @@ jobs:
run: docker build -t mathwave/sprint-repo:gitea-runner gitea-runner run: docker build -t mathwave/sprint-repo:gitea-runner gitea-runner
push: push:
name: Push name: Push
runs-on: [ dev ] runs-on: [ prod ]
needs: build needs: build
steps: steps:
- name: push nginx prod - name: push nginx prod
run: docker push mathwave/sprint-repo:sprint-infra-nginx-prod run: docker push mathwave/sprint-repo:sprint-infra-nginx-prod
- name: push gitea runner - name: push gitea runner
run: docker push mathwave/sprint-repo:gitea-runner run: docker push mathwave/sprint-repo:gitea-runner
prepare:
name: prepare
runs-on: [prod]
needs: push
steps:
- name: login
run: docker login -u mathwave -p ${{ secrets.DOCKERHUB_PASSWORD }}
- name: checkout
uses: actions/checkout@v4
with:
ref: dev
- name: prepare
run: chmod 777 ./prepare/run-production.sh && ./prepare/run-production.sh
deploy-prod: deploy-prod:
name: Deploy prod name: Deploy prod
runs-on: [prod] runs-on: [prod]
@ -41,8 +54,6 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
ref: prod ref: prod
- name: prepare
run: chmod 777 ./run.sh && ./run.sh
- name: deploy swarmpit - name: deploy swarmpit
run: docker stack deploy --with-registry-auth -c ./.deploy-swarmpit/deploy-prod.yaml swarmpit run: docker stack deploy --with-registry-auth -c ./.deploy-swarmpit/deploy-prod.yaml swarmpit
- name: deploy portainer - name: deploy portainer

View File

@ -1,14 +0,0 @@
FROM gitlab/gitlab-runner
RUN apt-get update
RUN apt-get install --yes ca-certificates curl gnupg lsb-release
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
RUN echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN apt-get update --yes
RUN apt-get install --yes docker-ce docker-ce-cli containerd.io docker-compose-plugin
RUN mkdir /etc/builds/
RUN chmod 777 /etc/builds

View File

@ -0,0 +1,9 @@
docker login -u mathwave -p $DOCKERHUB_PASSWORD
mkdir /sprint-data/mongo || true
mkdir /sprint-data/redis || true
mkdir /sprint-data/rabbitmq || true
mkdir /sprint-data/certs || true
mkdir /sprint-data/gitea || true
chmod 777 /sprint-data/redis
chmod 777 /sprint-data/rabbitmq
chmod 777 /sprint-data/gitea

View File

@ -1,7 +1,11 @@
docker login -u mathwave -p $DOCKERHUB_PASSWORD docker login -u mathwave -p $DOCKERHUB_PASSWORD
docker network create -d overlay --attachable swarmpit-nginx || true docker network create -d overlay --attachable swarmpit-nginx || true
docker network create -d overlay --attachable common-infra-nginx || true docker network create -d overlay --attachable common-infra-nginx || true
docker network create -d overlay --attachable common-infra-nginx-development || true
docker network create -d overlay --attachable queues || true docker network create -d overlay --attachable queues || true
docker network create -d overlay --attachable queues-development || true
docker network create -d overlay --attachable configurator || true
docker network create -d overlay --attachable configurator-development || true
mkdir /sprint-data/mongo || true mkdir /sprint-data/mongo || true
mkdir /sprint-data/redis || true mkdir /sprint-data/redis || true
mkdir /sprint-data/rabbitmq || true mkdir /sprint-data/rabbitmq || true