From 31f2b51b3733ffad1e10c26596b32aa25d6c2a06 Mon Sep 17 00:00:00 2001 From: Alex Frantz Date: Wed, 19 Nov 2025 16:44:47 -0500 Subject: [PATCH] add ability to build image --- roles/docker/tasks/main.yml | 19 +++++++++ tasks/api.yml | 85 ++++++++++++++++--------------------- 2 files changed, 55 insertions(+), 49 deletions(-) diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 7ed486f..6b1ed19 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -5,6 +5,25 @@ state: directory with_items: "{{ directories }}" +- name: Clone repository + git: + repo: "{{ build.git.repo }}" + dest: "{{ build.git.dest }}" + when: build is defined + +- name: Build Docker Image + docker_image: + name: "{{ image.name }}" + tag: "{{ image.tag }}" + build: + nocache: true + path: "{{ build.git.dest }}" + dockerfile: Dockerfile + source: build + force_source: true + state: present + when: build is defined + - name: Pull latest Docker image docker_image: name: "{{ image.name }}" diff --git a/tasks/api.yml b/tasks/api.yml index 23725eb..dadd74f 100644 --- a/tasks/api.yml +++ b/tasks/api.yml @@ -1,49 +1,15 @@ --- -- name: "Create file structure" - file: - path: "{{ item }}" - state: directory - with_items: - - "{{ data_dir }}/api" - - "{{ data_dir }}/api/db" - - "{{ data_dir }}/api/app" - -- name: "Clone latest API" - git: - repo: git@git.alexav.gg:alex/api.git - dest: "{{ data_dir }}/api/app" - -- name: "Build API Docker Image" - docker_image: - name: api - tag: "latest" - build: - nocache: true - path: "{{ data_dir }}/api/app" - dockerfile: Dockerfile - source: build - force_source: true - state: present - -- name: Create API Network - docker_network: - name: api - -- name: Deploy Redis Container - docker_container: - name: api_redis - image: redis:latest - restart_policy: unless-stopped - recreate: true - networks: - - name: api - -- name: Deploy Database Container - docker_container: +- name: Deploy API Database + include_role: + name: docker + vars: name: api_postgres - image: postgres:latest - restart_policy: unless-stopped - recreate: true + network_name: api + directories: + - "{{ data_dir }}/api/db" + image: + name: postgres + tag: latest networks: - name: api volumes: @@ -53,15 +19,36 @@ POSTGRES_PASSWORD: "{{ API_POSTGRES_PASSWORD }}" PGDATA: "/var/lib/postgresql/data/pgdata" -- name: Deploy API Container - docker_container: +- name: Deploy API Redis + include_role: + name: docker + vars: + name: api_redis + network_name: api + directories: + - "{{ data_dir }}/api/db" + image: + name: redis + tag: latest + networks: + - name: api + +- name: Deploy API + include_role: + name: docker + vars: name: api - image: api:latest - recreate: true - restart_policy: unless-stopped + network_name: api networks: - name: api - name: "{{ docker_network_name }}" + build: + git: + repo: git@git.alexav.gg:alex/api.git + dest: "{{ data_dir }}/api/app" + image: + name: api + tag: latest env: NODE_ENV: "production" VERSION: "v4"