Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: added healthcheck to outline #469

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
11 changes: 9 additions & 2 deletions ansible/roles/docker/tasks/compose-up.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
---
# Possible variables which can be set to change the behaviour of these tasks:
# - project_source (required): the path to the directory the compose file is in
# - remove_images: whether to remove and rebuild all used images while composing up.
# Leave unset to keep the images, otherwise use "local" or "all"

- name: "Check if 'project_source' is defined"
ansible.builtin.fail:
Expand All @@ -21,6 +25,7 @@
community.docker.docker_compose_v2:
project_src: "{{ project_source }}"
state: "absent"
remove_images: "{{ remove_images | default(omit) }}"

- name: "Create and start services"
community.docker.docker_compose_v2:
Expand All @@ -36,7 +41,7 @@
project_src: "{{ project_source }}"
register: "output"

- name: "Assert that all services properly started"
- name: "Assert that all services properly started, and that the docker compose file is idempotent"
ansible.builtin.assert:
that: "not output.changed"

Expand Down Expand Up @@ -69,10 +74,12 @@
- "output.containers | selectattr('Name', 'equalto', item) | map(attribute='State') | list | first == 'exited'"
loop: "{{ docker_compose_service_names }}"

- name: "Restart services"
- name: "Restart services and ensure they are healhty"
community.docker.docker_compose_v2:
project_src: "{{ project_source }}"
state: "restarted"
wait: true
wait_timeout: 300
register: "output"

# - name: Show results
Expand Down
15 changes: 15 additions & 0 deletions ansible/roles/outline/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@
mode: "0600"
notify: "trigger outline migration"

- name: "Create outline 'Dockerfile'"
ansible.builtin.template:
src: "Dockerfile.j2"
dest: "{{ outline_config.project_source }}/Dockerfile"
owner: "outline"
group: "outline"
mode: "0600"
notify: "trigger outline migration"
register: "dockerfile"

- name: "Create outline 'docker.env' file"
ansible.builtin.template:
src: "docker.env.j2"
Expand Down Expand Up @@ -76,11 +86,16 @@
path: "{{ outline_config.project_source }}/.MIGRATION_PENDING"
state: "absent"

- name: "Install required packages"
ansible.builtin.apt:
name: "wget"
state: "present"
SilasPeters marked this conversation as resolved.
Show resolved Hide resolved

- name: "Docker compose"
ansible.builtin.include_tasks: "../docker/tasks/compose-up.yml"
vars:
project_source: "{{ outline_config.project_source }}"
remove_images: "{{ 'local' if dockerfile.changed else omit }}" # Rebuild the image if file changed

- name: "Install nginx config"
ansible.builtin.template:
Expand Down
17 changes: 17 additions & 0 deletions ansible/roles/outline/templates/Dockerfile.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM outlinewiki/outline:{{ outline_config.version }}

# Become root to install package
USER root

RUN apt-get update \
&& apt-get install -y wget \
&& rm -rf /var/lib/apt/lists/*

# Return to defaut user for security reasons
USER nodejs

HEALTHCHECK --interval=5m --start-period=30s --start-interval=10s \
CMD wget -qO- http://localhost:${PORT}/_health | grep -q 'OK' \
&& wget -qO- https://hc-ping.com/{{ secret_healthchecks_io.ping_key }}/outline \
|| exit 1
SilasPeters marked this conversation as resolved.
Show resolved Hide resolved

5 changes: 3 additions & 2 deletions ansible/roles/outline/templates/docker-compose.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
services:

outline:
image: outlinewiki/outline:{{ outline_config.version }}
restart: unless-stopped
build:
dockerfile: Dockerfile
env_file: ./docker.env
restart: on-failure:3
# ports:
# - "4568:3000"
network_mode: host # TODO replace this
Expand Down
2 changes: 1 addition & 1 deletion ansible/roles/outline/vars/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

outline_config:
project_source: "/var/www/outline/outline"
version: "0.78.0"
version: "0.78.0" # Git tag
Loading