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 echo "$SSH_PRIVATE_KEY" > private.key
sudo chmod 400 private.key sudo chmod 400 private.key
- name: Setup Nomad - name: Write Ansible Inventory To File
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: 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: 'Local DB (PostgreSQL)', link: '/docker/local-db-pg' },
] ]
}, },
{
text: 'Docker Swarm',
link: '/docker-swarm/',
},
{ {
text: 'EF Core', text: 'EF Core',
link: '/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 text: Docker
link: /docker/ link: /docker/
- theme: alt
text: Docker Swarm
link: /docker-swarm/
- theme: alt - theme: alt
text: EF Core text: EF Core
link: /ef-core/ link: /ef-core/

View File

@@ -2,20 +2,38 @@
Handy commands for dumping and restoring Postgres databases. Handy commands for dumping and restoring Postgres databases.
:::info ::: info
Most of these commands are run using Docker as then we don't need to have Postgres installed locally. Most of these commands are run using Docker as then we don't need to have Postgres installed locally.
If a different version of Postgres is needed, just change the version number in the Docker image tag. 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 ## Dumping a Database
```bash ```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 ```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 @@
variable "version" {
type = string
default = "latest"
}
job "code-snippets" { job "code-snippets" {
datacenters = ["dc1"] datacenters = ["dc1"]
type = "service" type = "service"
variable "version" {
type = string
default = "latest"
}
group "code-snippets" { group "code-snippets" {
count = 1 count = 1