remembos: деплой через локальную сборку образа вместо Yandex Registry
- плейбук зовёт роль app_image, docker_login в cr.yandex удалён
- compose тянет `{{ app_name }}:{{ app_image_tag }}` с pull_policy: never
вместо зашитого тега из реестра
This commit is contained in:
@@ -23,13 +23,16 @@ remembos. Схема одинаковая — образ собирается л
|
||||
|
||||
Шаги:
|
||||
|
||||
- завендорить роль `app_image` — в `roles/` сейчас только `owner`, `eget`,
|
||||
`secrets`; механика переноса — [shared-roles-sync](shared-roles-sync.md)
|
||||
- ~~завендорить роль `app_image`~~ — **сделано**: подписка в `SYNCED_ROLES`,
|
||||
копия в `roles/app_image`; механика переноса — [shared-roles-sync](shared-roles-sync.md)
|
||||
- homepage: завести в Taskfile таск `image` с тегом из `$BUILD_ID`, перевести
|
||||
плейбук на роль, удалить `playbook-homepage-registry.yml` и registry-переменные
|
||||
из `vars/homepage.yml`
|
||||
- remembos: контракта сборки нет (есть Dockerfile, нет Taskfile) — завести таск
|
||||
`image`, убрать зашитый тег из compose
|
||||
- ~~remembos: контракта сборки нет (есть Dockerfile, нет Taskfile) — завести таск
|
||||
`image`, убрать зашитый тег из compose~~ — **сделано**: в репозитории remembos
|
||||
появился `Taskfile.yml` с таском `image`, плейбук зовёт роль, compose тянет
|
||||
`remembos:{{ app_image_tag }}` с `pull_policy: never`; `docker_login` из
|
||||
плейбука убран
|
||||
- transcriber: исходников на этой машине нет — до начала решить, живой ли сервис
|
||||
и откуда его собирать; иначе он останется единственным держателем registry и
|
||||
токен из оборота не выйдет
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
# Образ собирается локально и доставляется на сервер ролью app_image
|
||||
# (см. playbook-remembos.yml): тег — случайный BUILD_ID каждого прогона,
|
||||
# в реестре образа нет, поэтому pull_policy: never.
|
||||
|
||||
services:
|
||||
|
||||
remembos_app:
|
||||
image: "{{ yc_container_registry_repository }}/remembos:v0.2.0"
|
||||
image: "{{ app_name }}:{{ app_image_tag }}"
|
||||
container_name: remembos_app
|
||||
restart: unless-stopped
|
||||
pull_policy: never
|
||||
user: "{{ owner_create_result.uid }}:{{ owner_create_result.group }}"
|
||||
environment:
|
||||
- PUID={{ owner_create_result.uid }}
|
||||
|
||||
+10
-9
@@ -13,6 +13,16 @@
|
||||
config_file: "{{ (config_dir, 'config.toml') | path_join }}"
|
||||
|
||||
tasks:
|
||||
# Образ собирается на control-хосте самим репозиторием remembos (контракт —
|
||||
# `task image`) и едет на сервер через docker save/load, без реестра.
|
||||
# Роль выставляет факт app_image_tag — его подхватывает docker-compose.
|
||||
- name: "Build and deliver application image"
|
||||
ansible.builtin.import_role:
|
||||
name: "app_image"
|
||||
vars:
|
||||
app_image_name: "{{ app_name }}"
|
||||
app_image_src_dir: '{{ (playbook_dir, "..", "remembos") | path_join }}'
|
||||
|
||||
- name: "Create user and environment"
|
||||
ansible.builtin.import_role:
|
||||
name: owner
|
||||
@@ -53,15 +63,6 @@
|
||||
group: "{{ app_user }}"
|
||||
mode: "0640"
|
||||
|
||||
- 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: "Run application with docker compose"
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ base_dir }}"
|
||||
|
||||
Reference in New Issue
Block a user