homepage: деплой через локальную сборку образа вместо Yandex Registry

- плейбук зовёт роль app_image, docker_login и `pull: always` убраны
- compose тянет `homepage-nginx:{{ app_image_tag }}` с pull_policy: never
- удалён playbook-homepage-registry.yml и registry-переменные из vars
This commit is contained in:
av
2026-07-25 14:36:39 +03:00
parent d9656b8cdb
commit cb43273ad5
4 changed files with 19 additions and 34 deletions
+6 -1
View File
@@ -1,10 +1,15 @@
# Образ собирается локально и доставляется на сервер ролью app_image
# (см. playbook-homepage.yml): тег — случайный BUILD_ID каждого прогона,
# в реестре образа нет, поэтому pull_policy: never.
services:
homepage_app:
# noinspection ComposeUnknownValues
image: "{{ registry_homepage_nginx_image }}"
image: "{{ homepage_image_name }}:{{ app_image_tag }}"
container_name: homepage_app
restart: unless-stopped
pull_policy: never
networks:
- "web_proxy_network"
-18
View File
@@ -1,18 +0,0 @@
---
- name: "Upload local homepage images to registry"
hosts: all
gather_facts: false
vars_files:
- vars/homepage.yml
tasks:
- name: "Push web service image to remote registry"
community.docker.docker_image:
state: present
source: local
name: "{{ homepage_nginx_image }}"
repository: "{{ registry_homepage_nginx_image }}"
push: true
delegate_to: 127.0.0.1
+10 -10
View File
@@ -6,6 +6,16 @@
- vars/homepage.yml
tasks:
# Образ собирается на control-хосте самим репозиторием homepage (контракт —
# `task image`: сборка сайта astro + nginx-образ) и едет на сервер через
# docker save/load, без реестра. Роль выставляет факт app_image_tag.
- name: "Build and deliver application image"
ansible.builtin.import_role:
name: "app_image"
vars:
app_image_name: "{{ homepage_image_name }}"
app_image_src_dir: '{{ (playbook_dir, "..", "homepage") | path_join }}'
- name: "Create user and environment"
ansible.builtin.import_role:
name: owner
@@ -25,15 +35,6 @@
loop:
- "{{ base_dir }}"
- name: "Login to Yandex Container Registry"
community.docker.docker_login:
registry_url: "{{ yc_container_registry }}"
username: "oauth"
password: "{{ yc_oauth_token }}"
# Токен — аргумент модуля: по умолчанию не печатается, но всплывает
# при -v и в отчёте о падении задачи.
no_log: true
- name: "Copy docker compose file"
ansible.builtin.template:
src: "./files/{{ app_name }}/docker-compose.template.yml"
@@ -47,6 +48,5 @@
project_src: "{{ base_dir }}"
state: "present"
remove_orphans: true
pull: "always"
tags:
- run-app
+3 -5
View File
@@ -4,9 +4,7 @@ app_user: "{{ app_name }}"
app_owner_uid: 1008
app_owner_gid: 1009
base_dir: "{{ (application_dir, app_name) | path_join }}"
docker_registry_prefix: "cr.yandex/crplfk0168i4o8kd7ade"
homepage_nginx_image: "homepage-nginx:latest"
# Registry images
registry_homepage_nginx_image: "{{ (docker_registry_prefix, homepage_nginx_image) | path_join }}"
# Имя локально собираемого образа: им приложение тегает сборку (`task image`),
# под ним же роль app_image везёт образ на сервер и его находит docker-compose.
homepage_image_name: "homepage-nginx"