mirror of
https://github.com/Southampton-RSG/breccia-mapper.git
synced 2026-03-03 03:17:07 +00:00
build: update deployment for Docker
This commit is contained in:
@@ -1,7 +1,4 @@
|
|||||||
:80 :443 {
|
:80 :443 {
|
||||||
|
|
||||||
tls {$CADDY_TLS_EMAIL}
|
|
||||||
|
|
||||||
root * /srv
|
root * /srv
|
||||||
file_server
|
file_server
|
||||||
|
|
||||||
|
|||||||
@@ -11,5 +11,7 @@ RUN pip install --no-cache-dir --upgrade pip \
|
|||||||
|
|
||||||
COPY . ./
|
COPY . ./
|
||||||
|
|
||||||
|
# USER mapper
|
||||||
|
|
||||||
ENTRYPOINT [ "/app/entrypoint.sh" ]
|
ENTRYPOINT [ "/app/entrypoint.sh" ]
|
||||||
CMD [ "gunicorn", "-w", "2", "-b", "0.0.0.0:8000", "breccia_mapper.wsgi" ]
|
CMD [ "gunicorn", "-w", "2", "-b", "0.0.0.0:8000", "breccia_mapper.wsgi" ]
|
||||||
|
|||||||
5
Vagrantfile → deploy/Vagrantfile
vendored
5
Vagrantfile → deploy/Vagrantfile
vendored
@@ -20,5 +20,10 @@ Vagrant.configure("2") do |config|
|
|||||||
config.vm.provision "ansible" do |ansible|
|
config.vm.provision "ansible" do |ansible|
|
||||||
ansible.verbose = "v"
|
ansible.verbose = "v"
|
||||||
ansible.playbook = "playbook.yml"
|
ansible.playbook = "playbook.yml"
|
||||||
|
ansible.host_vars = {
|
||||||
|
"default" => {
|
||||||
|
"deploy_environment" => "vagrant"
|
||||||
|
}
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
85
deploy/playbook.yml
Normal file
85
deploy/playbook.yml
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
become_user: root
|
||||||
|
become_method: sudo
|
||||||
|
become: yes
|
||||||
|
|
||||||
|
pre_tasks:
|
||||||
|
- name: Check if running under Vagrant
|
||||||
|
stat:
|
||||||
|
path: /vagrant
|
||||||
|
register: vagrant_dir
|
||||||
|
|
||||||
|
vars:
|
||||||
|
project_name: mapper
|
||||||
|
project_dir: /srv/{{ project_name }}
|
||||||
|
project_src_dir: "{{ project_dir }}/src"
|
||||||
|
|
||||||
|
django_settings:
|
||||||
|
debug: 1
|
||||||
|
secret_key: debug_only_g62WlORMbo8iAcV7vKCKBQ==
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Vagrant specific tasks
|
||||||
|
block:
|
||||||
|
- name: Add Docker repository
|
||||||
|
get_url:
|
||||||
|
url: https://download.docker.com/linux/centos/docker-ce.repo
|
||||||
|
dest: '/etc/yum.repos.d/docker-ce.repo'
|
||||||
|
when: deploy_environment is defined and deploy_environment == "vagrant"
|
||||||
|
|
||||||
|
- name: Install system dependencies
|
||||||
|
ansible.builtin.yum:
|
||||||
|
name:
|
||||||
|
- git
|
||||||
|
- docker-ce
|
||||||
|
- docker-ce-cli
|
||||||
|
- containerd.io
|
||||||
|
- docker-compose-plugin
|
||||||
|
state: present
|
||||||
|
|
||||||
|
# - name: Update system packages
|
||||||
|
# ansible.builtin.yum:
|
||||||
|
# name: '*'
|
||||||
|
# state: latest
|
||||||
|
|
||||||
|
- name: Clone / update from source repos
|
||||||
|
ansible.builtin.git:
|
||||||
|
repo: 'https://github.com/Southampton-RSG/breccia-mapper.git'
|
||||||
|
dest: '{{ project_src_dir }}'
|
||||||
|
version: docker
|
||||||
|
accept_hostkey: yes
|
||||||
|
|
||||||
|
- name: Copy template files
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: '{{ item }}.j2'
|
||||||
|
dest: '{{ project_dir }}/{{ item }}'
|
||||||
|
mode: 0600
|
||||||
|
loop:
|
||||||
|
- Caddyfile
|
||||||
|
- docker-compose.yml
|
||||||
|
|
||||||
|
- name: Start Docker
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: docker
|
||||||
|
state: started
|
||||||
|
enabled: yes
|
||||||
|
|
||||||
|
- name: Pull latest docker images
|
||||||
|
ansible.builtin.command:
|
||||||
|
chdir: "{{ project_dir }}"
|
||||||
|
cmd: docker compose pull {{ item }}
|
||||||
|
loop:
|
||||||
|
- caddy
|
||||||
|
|
||||||
|
- name: Build custom images
|
||||||
|
ansible.builtin.command:
|
||||||
|
chdir: "{{ project_dir }}"
|
||||||
|
cmd: docker compose build {{ item }}
|
||||||
|
loop:
|
||||||
|
- web
|
||||||
|
|
||||||
|
- name: Start containers
|
||||||
|
ansible.builtin.command:
|
||||||
|
chdir: "{{ project_dir }}"
|
||||||
|
cmd: docker compose up -d
|
||||||
15
deploy/templates/Caddyfile.j2
Normal file
15
deploy/templates/Caddyfile.j2
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
:80 :443 {
|
||||||
|
root * /srv
|
||||||
|
file_server
|
||||||
|
|
||||||
|
@proxy_paths {
|
||||||
|
not path /static/*
|
||||||
|
}
|
||||||
|
|
||||||
|
reverse_proxy @proxy_paths http://web:8000
|
||||||
|
|
||||||
|
log {
|
||||||
|
output stderr
|
||||||
|
format single_field common_log
|
||||||
|
}
|
||||||
|
}
|
||||||
35
deploy/templates/docker-compose.yml.j2
Normal file
35
deploy/templates/docker-compose.yml.j2
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
version: '3.1'
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
image: breccia-mapper
|
||||||
|
build: {{ project_src_dir }}
|
||||||
|
ports:
|
||||||
|
- 8000:8000
|
||||||
|
environment:
|
||||||
|
DEBUG: {{ django_settings.debug }}
|
||||||
|
DATABASE_URL: sqlite:////app/db.sqlite3
|
||||||
|
SECRET_KEY: {{ django_settings.secret_key }}
|
||||||
|
volumes:
|
||||||
|
- ./db.sqlite3:/app/db.sqlite3:z
|
||||||
|
- static_files:/app/static
|
||||||
|
|
||||||
|
caddy:
|
||||||
|
image: caddy:2
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
volumes:
|
||||||
|
- ./Caddyfile:/etc/caddy/Caddyfile:z
|
||||||
|
# Caddy serves static files collected by Django
|
||||||
|
- static_files:/srv/static:ro
|
||||||
|
- caddy_data:/data
|
||||||
|
- caddy_config:/config
|
||||||
|
depends_on:
|
||||||
|
- web
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
caddy_data:
|
||||||
|
caddy_config:
|
||||||
|
static_files:
|
||||||
@@ -20,12 +20,10 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 80:80
|
- 80:80
|
||||||
- 443:443
|
- 443:443
|
||||||
environment:
|
|
||||||
CADDY_TLS_EMAIL: ${CADDY_TLS_EMAIL}
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./Caddyfile:/etc/caddy/Caddyfile:z
|
- ./Caddyfile:/etc/caddy/Caddyfile:z
|
||||||
# Caddy serves static files collected by Django
|
# Caddy serves static files collected by Django
|
||||||
- static_files:/srv/static
|
- static_files:/srv/static:ro
|
||||||
- caddy_data:/data
|
- caddy_data:/data
|
||||||
- caddy_config:/config
|
- caddy_config:/config
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
python manage.py migrate \
|
set -eo pipefail
|
||||||
&& python manage.py collectstatic --no-input \
|
|
||||||
&& exec "$@"
|
python manage.py migrate
|
||||||
|
python manage.py collectstatic --no-input
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
|
|||||||
18
playbook.yml
18
playbook.yml
@@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: all
|
|
||||||
become_user: root
|
|
||||||
become_method: sudo
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
pre_tasks:
|
|
||||||
- name: Check if running under Vagrant
|
|
||||||
stat:
|
|
||||||
path: /vagrant
|
|
||||||
register: vagrant_dir
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- database
|
|
||||||
- webserver
|
|
||||||
|
|
||||||
vars:
|
|
||||||
ansible_python_interpreter: python2
|
|
||||||
Reference in New Issue
Block a user