add docker container

This commit is contained in:
Antonio J. Delgado 2022-11-19 11:54:31 +02:00
parent bee1b53e41
commit dd771f0ee2
6 changed files with 116 additions and 21 deletions

View file

@ -5,11 +5,10 @@ mastodon_host: mastodon.example.com
#Use HTTP only for Vagrant testing or for reverse proxy purposes. #Use HTTP only for Vagrant testing or for reverse proxy purposes.
use_http: true use_http: true
ansible_python_interpreter: "/usr/bin/python2" ansible_python_interpreter: "/usr/bin/python2"
docker_compose_version: "1.16.1"
docker_compose_hash: "1804b0ce6596efe707b9cab05d74b161833ed503f0535a937dd5d17bea8fc50a"
mastodon_docker_image: "moritzheiber/mastodon-docker" mastodon_docker_image: "moritzheiber/mastodon-docker"
mastodon_docker_network: "mastodon_network" mastodon_docker_network: "mastodon_network"
docker_command: podman
install_python_packages: install_python_packages:
- package: "docker" - package: "docker"
@ -17,13 +16,15 @@ uninstall_python_packages:
- package: "docker-py" - package: "docker-py"
install_packages: install_packages:
- package: "docker-ce" - package: "podman"
- package: "python-pip-whl" - package: "python-pip-whl"
- package: "python-setuptools" - package: "python-setuptools"
uninstall_packages: uninstall_packages:
- package: "docker-engine" - package: "docker-engine"
- package: "docker" - package: "docker"
- package: "docker-ce"
- package: "docker-ce-cli"
- package: "dockerio" - package: "dockerio"
run_preflight_checks: "true" run_preflight_checks: "true"

View file

@ -2,4 +2,8 @@
- name: Bootstrapping - name: Bootstrapping
import_tasks: docker/init.yml import_tasks: docker/init.yml
- import_tasks: ubuntu.yml
when: ansible_distribution == 'Ubuntu'
- import_tasks: docker/core.yml - import_tasks: docker/core.yml
- import_tasks: docker/docker.yml

View file

@ -1,16 +1,5 @@
--- ---
- import_tasks: ubuntu.yml
when: ansible_facts['distribution'] == 'Ubuntu'
- name: Install docker-compose
get_url:
url: "https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-Linux-x86_64"
dest: "/usr/bin/docker-compose"
sha256sum: "{{ docker_compose_hash }}"
mode: 0755
become: true
- name: Install Docker packages - name: Install Docker packages
package: package:
name: "{{ item.package }}" name: "{{ item.package }}"
@ -31,18 +20,13 @@
state: absent state: absent
with_items: "{{ uninstall_python_packages }}" with_items: "{{ uninstall_python_packages }}"
- name: Install docker-compose Python
pip:
name: docker-compose
#version: 1.17.0rc1
- name: Check for existing network - name: Check for existing network
raw: "docker network inspect {{ mastodon_docker_network }}" raw: "{{ docker_command }} network inspect {{ mastodon_docker_network }}"
register: docker_network register: docker_network
ignore_errors: True ignore_errors: True
become: true become: true
- name: Create main docker network - name: Create main docker network
raw: "docker network create -d bridge {{ mastodon_docker_network }}" raw: "{{ docker_command }} network create -d bridge {{ mastodon_docker_network }}"
when: docker_network is failed when: docker_network is failed
become: true become: true

100
tasks/docker/docker.yml Normal file
View file

@ -0,0 +1,100 @@
---
- docker_service:
project_name: redis
definition:
version: "2.3"
services:
redis:
image: redis:4.0-alpine
networks:
- "{{ mastodon_docker_network }}"
restart: on-failure
networks:
"{{ mastodon_docker_network }}":
external: true
- docker_service:
project_name: db
definition:
version: "2.3"
services:
db:
image: postgresql:9.6-alpine
networks:
- "{{ mastodon_docker_network }}"
restart: on-failure
env_file: /mastodon/.env
environment:
- POSTGRES_USER: "{{ db_user }}"
- POSTGRES_PASSWORD: "{{ db_password }}"
- POSTGRES_DB: "{{ db_name }}"
networks:
"{{ mastodon_docker_network }}":
external: true
- docker_service:
project_name: web
definition:
version: "2.3"
services:
web:
image: "gargron/mastodon:v{{ mastodon_release }}"
networks:
- "{{ mastodon_docker_network }}"
command: bundle exec rails s -p 3000 -b '0.0.0.0'
restart: on-failure
env_file: /mastodon/.env
networks:
"{{ mastodon_docker_network }}":
external: true
# notify: "restart caddy webserver"
- docker_service:
project_name: sidekiq
definition:
version: "2.3"
services:
sidekiq:
image: "moritzheiber/mastodon-docker"
networks:
- "{{ mastodon_docker_network }}"
command: bundle exec sidekiq -q default -q mailers -q pull -q push
restart: on-failure
env_file: /mastodon/.env
networks:
"{{ mastodon_docker_network }}":
external: true
- docker_service:
project_name: streaming
definition:
version: "2.3"
services:
streaming:
image: "moritzheiber/mastodon-docker"
networks:
- "{{ mastodon_docker_network }}"
command: npm run start
restart: on-failure
env_file: /mastodon/.env
networks:
"{{ mastodon_docker_network }}":
external: true
# notify: "restart caddy webserver"
# - docker_service:
# project_name: web
# definition:
# version: "2.3"
# services:
# web:
# image: "moritzheiber/mastodon-docker"
# networks:
# - "{{ mastodon_docker_network }}"
# command: bundle exec rails s -p 3000 -b '0.0.0.0'
# restart: on-failure
# env_file: /mastodon/.env
# networks:
# "{{ mastodon_docker_network }}":
# external: true
# notify: "restart caddy webserver"

View file

@ -12,15 +12,18 @@
become: true become: true
with_items: with_items:
- { id: "9DC858229FC7DD38854AE2D88D81803C0EBFCD88", url: "https://download.docker.com/linux/ubuntu/gpg" } - { id: "9DC858229FC7DD38854AE2D88D81803C0EBFCD88", url: "https://download.docker.com/linux/ubuntu/gpg" }
when: docker_command == 'docker'
- name: Install Docker repository - name: Install Docker repository
apt_repository: repo={{ item.repo }} state=present apt_repository: repo={{ item.repo }} state=present
become: true become: true
with_items: with_items:
- { repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" } - { repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" }
when: docker_command == 'docker'
- name: Run apt update - name: Run apt update
apt: apt:
update_cache: true update_cache: true
cache_valid_time: 3600 cache_valid_time: 3600
become: true become: true
when: docker_command == 'docker'

View file

@ -3,6 +3,9 @@
include_tasks: bare.yml include_tasks: bare.yml
when: mastodon_bare_installation when: mastodon_bare_installation
- import_tasks: ubuntu.yml
when: ansible_facts['distribution'] == 'Ubuntu'
- name: Ensure docker installation - name: Ensure docker installation
include_tasks: docker.yml include_tasks: docker.yml
when: not mastodon_bare_installation when: not mastodon_bare_installation