Compare commits
9 Commits
0f4b7ac7a5
...
71a2fe1beb
Author | SHA1 | Date | |
---|---|---|---|
71a2fe1beb | |||
0436224728 | |||
e5dcc062de | |||
bb6777f389 | |||
467e98b01a | |||
161967ebac | |||
3026e30783 | |||
494228b367 | |||
024a056d9e |
@@ -1,6 +1,10 @@
|
||||
# FIXME
|
||||
|
||||
Search and replace all mentions of FIXME with sensible content in this file and in [docker-compose.yml](docker-compose.yml).
|
||||
|
||||
# Grafana Docker Compose files
|
||||
|
||||
Docker Compose files to spin up an instance of Grafana.
|
||||
Docker Compose files to spin up an instance of Grafana FIXME capitalization FIXME.
|
||||
|
||||
# How to run
|
||||
|
||||
@@ -24,6 +28,25 @@ On your deployment machine create the necessary Docker context to connect to and
|
||||
docker context create fully.qualified.domain.name --docker 'host=ssh://root@fully.qualified.domain.name'
|
||||
```
|
||||
|
||||
## Pull
|
||||
|
||||
Pull images from Docker Hub verbatim.
|
||||
|
||||
```
|
||||
docker compose --project-name "${COMPOSE_PROJECT}" --file "${COMPOSE_FILE}" --env-file "${COMPOSE_ENV}" --profile 'full' pull
|
||||
```
|
||||
|
||||
## Copy to target
|
||||
|
||||
Copy images to target Docker host, that is assuming you deploy to a machine that itself has no network route to reach Docker Hub. Copying in its simplest form involves a local `docker save` and a remote `docker load`. Consider the helper mini-project [quico.space/Quico/copy-docker](https://quico.space/Quico/copy-docker) where [copy-docker.sh](https://quico.space/Quico/copy-docker/src/branch/main/copy-docker.sh) allows the following workflow:
|
||||
|
||||
```
|
||||
source "${COMPOSE_ENV}"
|
||||
for image in 'grafana:'"${GRAFANA_VERSION}" 'nginx:'"${NGINX_VERSION}"; do
|
||||
copy-docker.sh "${image}" fully.qualified.domain.name
|
||||
done
|
||||
```
|
||||
|
||||
## Start
|
||||
|
||||
```
|
||||
@@ -52,7 +75,7 @@ Create ZFS datasets and set permissions as needed.
|
||||
zfs create -p 'zpool/docker-data/grafana-'"${COMPOSE_CTX}"'/nginx/data/logs'
|
||||
zfs create -p 'zpool/docker-data/grafana-'"${COMPOSE_CTX}"'/nginx/config'
|
||||
```
|
||||
When changing bind mount locations to real ones remember to also update `volumes:` in [docker-compose.yml](docker-compose.yml).
|
||||
FIXME delete when all is done FIXME When changing bind mount locations to real ones remember to also update `volumes:` in [docker-compose.yml](docker-compose.yml).
|
||||
|
||||
* Create subdirs
|
||||
```
|
||||
@@ -68,20 +91,22 @@ Create ZFS datasets and set permissions as needed.
|
||||
|
||||
Place the following files on target server. Use the directory structure at [build-context](build-context) as a guide, specifically at `docker-data`.
|
||||
|
||||
FIXME Add details about files that aren't self-explanatory FIXME
|
||||
|
||||
```
|
||||
build-context/
|
||||
├── grafana
|
||||
│ ├── docker-data
|
||||
│ | └── config
|
||||
│ │ └── grafana.cfg
|
||||
│ ├── Dockerfile
|
||||
│ └── extras
|
||||
│ ├── ...
|
||||
│ └── ...
|
||||
└── nginx
|
||||
├── docker-data
|
||||
| └── config
|
||||
│ └── nginx.cfg
|
||||
├── Dockerfile
|
||||
└── extras
|
||||
├── ...
|
||||
└── ...
|
||||
```
|
||||
|
||||
When done head back up to [How to run](#how-to-run).
|
||||
|
@@ -1,5 +1,6 @@
|
||||
services:
|
||||
grafana:
|
||||
# FIXME Docker Hub image name with or without slash? FIXME
|
||||
image: "grafana:${GRAFANA_VERSION}"
|
||||
container_name: "grafana-grafana-${CONTEXT}"
|
||||
networks:
|
||||
@@ -28,6 +29,7 @@ services:
|
||||
# GRAFANA_USER: ${GRAFANA_USER}
|
||||
# GRAFANA_PASSWORD: ${GRAFANA_PASSWORD}
|
||||
nginx:
|
||||
# FIXME Docker Hub image name with or without slash? FIXME
|
||||
image: "nginx:${NGINX_VERSION}"
|
||||
container_name: "grafana-nginx-${CONTEXT}"
|
||||
networks:
|
||||
|
@@ -1,6 +1,10 @@
|
||||
# FIXME
|
||||
|
||||
Search and replace all mentions of FIXME with sensible content in this file and in [docker-compose.yml](docker-compose.yml).
|
||||
|
||||
# Vault Docker Compose files
|
||||
|
||||
Docker Compose files to spin up an instance of Vault.
|
||||
Docker Compose files to spin up an instance of Vault FIXME capitalization FIXME.
|
||||
|
||||
# How to run
|
||||
|
||||
@@ -18,12 +22,6 @@ export COMPOSE_OVERRIDE="${COMPOSE_DIR%/}"'/docker-compose.override.yml'
|
||||
export COMPOSE_ENV=<add accordingly>
|
||||
```
|
||||
|
||||
## Build
|
||||
|
||||
```
|
||||
docker compose --project-name "${COMPOSE_PROJECT}" --file "${COMPOSE_FILE}" --file "${COMPOSE_OVERRIDE}" --env-file "${COMPOSE_ENV}" --profile 'build' build
|
||||
```
|
||||
|
||||
## Context
|
||||
|
||||
On your deployment machine create the necessary Docker context to connect to and control the Docker daemon on whatever target host you'll be using, for example:
|
||||
@@ -31,6 +29,30 @@ On your deployment machine create the necessary Docker context to connect to and
|
||||
docker context create fully.qualified.domain.name --docker 'host=ssh://root@fully.qualified.domain.name'
|
||||
```
|
||||
|
||||
## Build
|
||||
FIXME We build the `vault` image locally. Our adjustment to the official image is simply adding `/tmp/vault` to it. See [build-context/vault/Dockerfile](build-context/vault/Dockerfile). We use `/tmp/vault` to bind-mount a dedicated ZFS dataset for the application's `tmpdir` location.
|
||||
|
||||
```
|
||||
docker compose --project-name "${COMPOSE_PROJECT}" --file "${COMPOSE_FILE}" --file "${COMPOSE_OVERRIDE}" --env-file "${COMPOSE_ENV}" --profile 'build-vault' build
|
||||
```
|
||||
|
||||
## Pull
|
||||
|
||||
FIXME Rewrite either [Build](#build) or this paragraph for which images are built and which ones pulled, `--profile 'full'` may not make sense FIXME Pull images from Docker Hub verbatim.
|
||||
|
||||
```
|
||||
docker compose --project-name "${COMPOSE_PROJECT}" --file "${COMPOSE_FILE}" --env-file "${COMPOSE_ENV}" --profile 'full' pull
|
||||
```
|
||||
|
||||
## Copy to target
|
||||
|
||||
Copy images to target Docker host, that is assuming you deploy to a machine that itself has no network route to reach Docker Hub. Copying in its simplest form involves a local `docker save` and a remote `docker load`. Consider the helper mini-project [quico.space/Quico/copy-docker](https://quico.space/Quico/copy-docker) where [copy-docker.sh](https://quico.space/Quico/copy-docker/src/branch/main/copy-docker.sh) allows the following workflow:
|
||||
|
||||
```
|
||||
source "${COMPOSE_ENV}"
|
||||
copy-docker.sh 'vault':"${VAULT_VERSION}" fully.qualified.domain.name
|
||||
```
|
||||
|
||||
## Start
|
||||
|
||||
```
|
||||
@@ -56,7 +78,7 @@ Create ZFS datasets and set permissions as needed.
|
||||
zfs create -p 'zpool/docker-data/vault-'"${COMPOSE_CTX}"'/vault/data/logs'
|
||||
zfs create -p 'zpool/docker-data/vault-'"${COMPOSE_CTX}"'/vault/config'
|
||||
```
|
||||
When changing bind mount locations to real ones remember to also update `volumes:` in [docker-compose.yml](docker-compose.yml).
|
||||
FIXME delete when all is done FIXME When changing bind mount locations to real ones remember to also update `volumes:` in [docker-compose.yml](docker-compose.yml).
|
||||
|
||||
* Create subdirs
|
||||
```
|
||||
@@ -72,13 +94,15 @@ Create ZFS datasets and set permissions as needed.
|
||||
|
||||
Place the following files on target server. Use the directory structure at [build-context](build-context) as a guide, specifically at `docker-data`.
|
||||
|
||||
FIXME Add details about files that aren't self-explanatory FIXME
|
||||
|
||||
```
|
||||
build-context/
|
||||
├── docker-data
|
||||
│ └── config
|
||||
│ └── vault.cfg
|
||||
├── Dockerfile
|
||||
└── extras
|
||||
├── ...
|
||||
└── ...
|
||||
```
|
||||
|
||||
When done head back up to [How to run](#how-to-run).
|
||||
|
@@ -1,5 +1,6 @@
|
||||
services:
|
||||
vault:
|
||||
# FIXME Docker Hub image name with or without slash? FIXME
|
||||
image: "vault:${VAULT_VERSION}"
|
||||
container_name: "vault-${CONTEXT}"
|
||||
networks:
|
||||
|
@@ -1,6 +1,10 @@
|
||||
# FIXME
|
||||
|
||||
Search and replace all mentions of FIXME with sensible content in this file and in [docker-compose.yml](docker-compose.yml).
|
||||
|
||||
# {{ cookiecutter.__service_slug.capitalize() }} Docker Compose files
|
||||
|
||||
Docker Compose files to spin up an instance of {{ cookiecutter.__service_slug.capitalize() }}.
|
||||
Docker Compose files to spin up an instance of {{ cookiecutter.__service_slug.capitalize() }} FIXME capitalization FIXME.
|
||||
|
||||
# How to run
|
||||
|
||||
@@ -18,15 +22,6 @@ export COMPOSE_OVERRIDE="${COMPOSE_DIR%/}"'/docker-compose.override.yml'{% endif
|
||||
export COMPOSE_ENV=<add accordingly>
|
||||
```
|
||||
|
||||
{%- if cookiecutter.build == "yes" %}
|
||||
|
||||
## Build
|
||||
|
||||
```
|
||||
docker compose --project-name "${COMPOSE_PROJECT}" --file "${COMPOSE_FILE}" --file "${COMPOSE_OVERRIDE}" --env-file "${COMPOSE_ENV}" --profile 'build' build
|
||||
```
|
||||
{%- endif %}
|
||||
|
||||
## Context
|
||||
|
||||
On your deployment machine create the necessary Docker context to connect to and control the Docker daemon on whatever target host you'll be using, for example:
|
||||
@@ -34,6 +29,46 @@ On your deployment machine create the necessary Docker context to connect to and
|
||||
docker context create fully.qualified.domain.name --docker 'host=ssh://root@fully.qualified.domain.name'
|
||||
```
|
||||
|
||||
{%- if cookiecutter.build == "yes" %}
|
||||
|
||||
## Build
|
||||
|
||||
{%- set components = cookiecutter.__component_list_slug.split(',') -%}
|
||||
{% for component in components %}
|
||||
{%- if loop.first %}
|
||||
FIXME We build the `{{ cookiecutter.__service_slug }}` image locally. Our adjustment to the official image is simply adding `/tmp/{{ cookiecutter.__service_slug }}` to it. See [build-context/{{ cookiecutter.__service_slug }}/Dockerfile](build-context/{{ cookiecutter.__service_slug }}/Dockerfile). We use `/tmp/{{ cookiecutter.__service_slug }}` to bind-mount a dedicated ZFS dataset for the application's `tmpdir` location.
|
||||
|
||||
```
|
||||
docker compose --project-name "${COMPOSE_PROJECT}" --file "${COMPOSE_FILE}" --file "${COMPOSE_OVERRIDE}" --env-file "${COMPOSE_ENV}" --profile 'build-{{ cookiecutter.__service_slug }}' build
|
||||
```
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
|
||||
## Pull
|
||||
|
||||
{% if cookiecutter.build == "yes" %}FIXME Rewrite either [Build](#build) or this paragraph for which images are built and which ones pulled, `--profile 'full'` may not make sense FIXME {% endif %}Pull images from Docker Hub verbatim.
|
||||
|
||||
```
|
||||
docker compose --project-name "${COMPOSE_PROJECT}" --file "${COMPOSE_FILE}" --env-file "${COMPOSE_ENV}" --profile 'full' pull
|
||||
```
|
||||
|
||||
## Copy to target
|
||||
|
||||
Copy images to target Docker host, that is assuming you deploy to a machine that itself has no network route to reach Docker Hub. Copying in its simplest form involves a local `docker save` and a remote `docker load`. Consider the helper mini-project [quico.space/Quico/copy-docker](https://quico.space/Quico/copy-docker) where [copy-docker.sh](https://quico.space/Quico/copy-docker/src/branch/main/copy-docker.sh) allows the following workflow:
|
||||
|
||||
```
|
||||
source "${COMPOSE_ENV}"
|
||||
{%- set components = cookiecutter.__component_list_slug.split(',') -%}
|
||||
{%- if ',' in cookiecutter.__component_list_slug %}
|
||||
for image in{% for component in components %} '{{ component }}:'"${% raw %}{{% endraw %}{{ component.upper() }}_VERSION{% raw %}}{% endraw %}"{%- endfor %}; do
|
||||
copy-docker.sh "${image}" fully.qualified.domain.name
|
||||
done
|
||||
{%- else %}
|
||||
copy-docker.sh '{{ cookiecutter.__component_list_slug }}':"${% raw %}{{% endraw %}{{ cookiecutter.__component_list_slug.upper() }}_VERSION{% raw %}}{% endraw %}" fully.qualified.domain.name
|
||||
{%- endif %}
|
||||
```
|
||||
|
||||
## Start
|
||||
|
||||
```
|
||||
@@ -72,7 +107,7 @@ Create ZFS datasets and set permissions as needed.
|
||||
zfs create -p 'zpool/docker-data/{{ cookiecutter.__service_slug }}-'"${COMPOSE_CTX}"'/{{ cookiecutter.__service_slug }}/config'
|
||||
{%- endif %}
|
||||
```
|
||||
When changing bind mount locations to real ones remember to also update `volumes:` in [docker-compose.yml](docker-compose.yml).
|
||||
FIXME delete when all is done FIXME When changing bind mount locations to real ones remember to also update `volumes:` in [docker-compose.yml](docker-compose.yml).
|
||||
|
||||
* Create subdirs
|
||||
```
|
||||
@@ -98,6 +133,8 @@ Create ZFS datasets and set permissions as needed.
|
||||
|
||||
Place the following files on target server. Use the directory structure at [build-context](build-context) as a guide, specifically at `docker-data`.
|
||||
|
||||
FIXME Add details about files that aren't self-explanatory FIXME
|
||||
|
||||
```
|
||||
build-context/
|
||||
{%- if ',' in cookiecutter.__component_list_slug -%}
|
||||
@@ -108,23 +145,23 @@ build-context/
|
||||
│ ├── docker-data
|
||||
│ | └── config
|
||||
│ │ └── {{ component }}.cfg
|
||||
│ ├── Dockerfile
|
||||
│ └── extras
|
||||
│ ├── ...
|
||||
│ └── ...
|
||||
{%- else %}
|
||||
└── {{ component }}
|
||||
├── docker-data
|
||||
| └── config
|
||||
│ └── {{ component }}.cfg
|
||||
├── Dockerfile
|
||||
└── extras
|
||||
├── ...
|
||||
└── ...
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
{%- else %}
|
||||
├── docker-data
|
||||
│ └── config
|
||||
│ └── {{ cookiecutter.__service_slug }}.cfg
|
||||
├── Dockerfile
|
||||
└── extras
|
||||
├── ...
|
||||
└── ...
|
||||
{%- endif %}
|
||||
```
|
||||
|
||||
|
@@ -12,6 +12,7 @@ services:
|
||||
{%- endfor -%}
|
||||
{%- for component in components %}
|
||||
{{ component }}:
|
||||
# FIXME Docker Hub image name with or without slash? FIXME
|
||||
image: "{{ component }}:${% raw %}{{% endraw %}{{ component.upper() }}_VERSION{% raw %}}{% endraw %}"
|
||||
container_name: "{{ cookiecutter.__service_slug }}-{{ component }}-${CONTEXT}"
|
||||
networks:
|
||||
@@ -51,6 +52,7 @@ services:
|
||||
{%- endfor -%}
|
||||
{%- else %}
|
||||
{{ cookiecutter.__component_list_slug }}:
|
||||
# FIXME Docker Hub image name with or without slash? FIXME
|
||||
image: "{{ cookiecutter.__component_list_slug }}:${% raw %}{{% endraw %}{{ cookiecutter.__component_list_slug.upper() }}_VERSION{% raw %}}{% endraw %}"
|
||||
container_name: "{{ cookiecutter.__service_slug }}-${CONTEXT}"
|
||||
networks:
|
||||
|
Reference in New Issue
Block a user