Compare commits

...

10 Commits

Author SHA1 Message Date
45f2c61c17 Merge pull request 'docker swarm' (#14) from feat/add-docker into main
All checks were successful
Build, Test & Publish / Build (push) Successful in 23s
Build, Test & Publish / Build and Publish Container Image (push) Successful in 1m13s
Build, Test & Publish / Deploy to Infrastructure (push) Successful in 2m25s
Reviewed-on: #14
2025-10-22 13:13:33 +11:00
dd30ade94b docker swarm
All checks were successful
Build, Test & Publish / Build (pull_request) Successful in 26s
Build, Test & Publish / Build and Publish Container Image (pull_request) Has been skipped
Build, Test & Publish / Deploy to Infrastructure (pull_request) Has been skipped
2025-10-22 13:11:59 +11:00
587287fb82 Merge pull request 'update commands for postgres' (#13) from fix/postgres into main
All checks were successful
Build, Test & Publish / Build (push) Successful in 27s
Build, Test & Publish / Build and Publish Container Image (push) Successful in 29s
Build, Test & Publish / Deploy to Infrastructure (push) Successful in 1m8s
Reviewed-on: #13
2025-10-20 12:23:57 +11:00
78788f05e3 Merge branch 'main' into fix/postgres
All checks were successful
Build, Test & Publish / Build (pull_request) Successful in 27s
Build, Test & Publish / Build and Publish Container Image (pull_request) Has been skipped
Build, Test & Publish / Deploy to Infrastructure (pull_request) Has been skipped
2025-10-20 12:23:45 +11:00
87d81bb447 revert so can deploy
All checks were successful
Build, Test & Publish / Build (push) Successful in 31s
Build, Test & Publish / Build and Publish Container Image (push) Successful in 1m13s
Build, Test & Publish / Deploy to Infrastructure (push) Successful in 1m9s
2025-10-20 12:20:05 +11:00
52427c453e change to use var
Some checks failed
Build, Test & Publish / Build (push) Successful in 24s
Build, Test & Publish / Build and Publish Container Image (push) Successful in 30s
Build, Test & Publish / Deploy to Infrastructure (push) Failing after 8m59s
2025-10-19 21:47:12 +11:00
6e5d4e39e7 try fix job nomad
Some checks failed
Build, Test & Publish / Build (push) Successful in 24s
Build, Test & Publish / Build and Publish Container Image (push) Successful in 29s
Build, Test & Publish / Deploy to Infrastructure (push) Failing after 11s
2025-10-19 21:43:39 +11:00
ea1bc210c6 Merge pull request 'fix var' (#12) from feat/new-infra into main
Some checks failed
Build, Test & Publish / Build (push) Successful in 25s
Build, Test & Publish / Build and Publish Container Image (push) Successful in 30s
Build, Test & Publish / Deploy to Infrastructure (push) Failing after 11s
Reviewed-on: #12
2025-10-19 21:40:24 +11:00
acee9670d0 fix var
All checks were successful
Build, Test & Publish / Build (pull_request) Successful in 23s
Build, Test & Publish / Build and Publish Container Image (pull_request) Has been skipped
Build, Test & Publish / Deploy to Infrastructure (pull_request) Has been skipped
2025-10-19 21:39:32 +11:00
54ed8d999f update commands for postgres
All checks were successful
Build, Test & Publish / Build (pull_request) Successful in 26s
Build, Test & Publish / Build and Publish Container Image (pull_request) Has been skipped
Build, Test & Publish / Deploy to Infrastructure (pull_request) Has been skipped
2025-10-16 08:33:38 +11:00
6 changed files with 93 additions and 18 deletions

View File

@@ -80,13 +80,35 @@ jobs:
echo "$SSH_PRIVATE_KEY" > private.key
sudo chmod 400 private.key
- name: Setup Nomad
uses: hashicorp/setup-nomad@main
with:
nomad_version: '1.10.5'
- name: Deploy Job to Nomad
run: |
nomad job run -var="version=${{ github.sha }}" infra/nomad/code-snippets.nomad.hcl
- name: Write Ansible Inventory To File
env:
NOMAD_ADDR: ${{ secrets.NOMAD_ADDR }}
APP_HOST: ${{ secrets.APP_HOST }}
run: |
echo "[app]" > hosts.ini
echo "$APP_HOST" >> hosts.ini
- name: Install Ansible
run: |
sudo apt-add-repository ppa:ansible/ansible -y
sudo apt-get update -y
sudo apt-get install ansible -y
- name: Run Ansible Playbook to Configure Servers
run: |
export ANSIBLE_HOST_KEY_CHECKING=False # Disable host key checking
ansible-playbook infra/ansible/deploy-playbook.yml --private-key private.key --inventory hosts.ini
env:
APP_HOST: ${{ secrets.APP_HOST }}
REGISTRY_USERNAME: ${{ secrets.DOCKER_USERNAME }}
REGISTRY_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
# - name: Setup Nomad
# uses: hashicorp/setup-nomad@main
# with:
# nomad_version: '1.10.5'
# - name: Deploy Job to Nomad
# run: |
# nomad job run -var="version=${{ github.sha }}" infra/nomad/code-snippets.nomad.hcl
# env:
# NOMAD_ADDR: ${{ vars.NOMAD_ADDR }}

View File

@@ -76,6 +76,10 @@ export default defineConfig({
{ text: 'Local DB (PostgreSQL)', link: '/docker/local-db-pg' },
]
},
{
text: 'Docker Swarm',
link: '/docker-swarm/',
},
{
text: 'EF Core',
link: '/ef-core/',

View File

@@ -0,0 +1,27 @@
# Docker Swarm Snippets and Musings
## Updating Services
View services:
```bash
docker service ls
```
To scale a service up or down:
```bash
docker service scale <service_name>=<number_of_replicas>
```
Sometimes services get stuck or need to be forcefully updated:
```bash
docker service update --force <service_name>
```
::: tip
Sometimes if you need to force containers to restart use the update force (e.g. after restarting a node).
:::

View File

@@ -26,6 +26,10 @@ hero:
text: Docker
link: /docker/
- theme: alt
text: Docker Swarm
link: /docker-swarm/
- theme: alt
text: EF Core
link: /ef-core/

View File

@@ -8,14 +8,32 @@ Most of these commands are run using Docker as then we don't need to have Postgr
If a different version of Postgres is needed, just change the version number in the Docker image tag.
:::
## Setup
Create a pgpass file in the current directory with the following content:
```
<server>:<port>:<database>:<username>:<password>
```
::: tip
Use `*` as a wildcard for any of the fields except for the password.
:::
## Dumping a Database
```bash
docker run --network host --rm -v .:/tmp -e PGPASSWORD=mysecretpassword postgres:16 pg_dump -h localhost -U myuser -d mydb -f /tmp/dump.sql
docker run --network host --rm -v .:/tmp -v ./pgpass:/root/.pgpass -e PGPASSFILE=/root/.pgpass postgres:16 bash -c "chmod 600 /root/.pgpass && pg_dump -h <server> -p <port> -U <username> <database> -f /tmp/$(date +%Y%m%d_%H%M%S)_<database>_dump.sql -c --if-exists"
```
## Restoring a Database
## Dumping a Cluster
```bash
docker run --network host --rm -v .:/tmp -e PGPASSWORD=mysecretpassword postgres:16 psql -h localhost -U myuser -d mydb -f /tmp/dump.sql
docker run --network host --rm -v .:/tmp -v ./pgpass:/root/.pgpass -e PGPASSFILE=/root/.pgpass postgres:16 bash -c "chmod 600 /root/.pgpass && pg_dumpall -h <server> -p <port> -U <username> -f /tmp/$(date +%Y%m%d_%H%M%S)_<server>_cluster_dump.sql -c --if-exists"
```
## Restoring from a SQL Dump
```bash
docker run --network host --rm -v .:/tmp -v ./pgpass:/root/.pgpass -e PGPASSFILE=/root/.pgpass postgres:16 bash -c "chmod 600 /root/.pgpass && psql -h <server> -p <port> -U <username> <database> -f /tmp/dump.sql -X"
```

View File

@@ -1,12 +1,12 @@
job "code-snippets" {
datacenters = ["dc1"]
type = "service"
variable "version" {
type = string
default = "latest"
}
job "code-snippets" {
datacenters = ["dc1"]
type = "service"
group "code-snippets" {
count = 1