diff --git a/files/homepage/docker-compose.template.yml b/files/homepage/docker-compose.template.yml index 3b34f08..fb37178 100644 --- a/files/homepage/docker-compose.template.yml +++ b/files/homepage/docker-compose.template.yml @@ -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" diff --git a/playbook-homepage-registry.yml b/playbook-homepage-registry.yml deleted file mode 100644 index eab8eb5..0000000 --- a/playbook-homepage-registry.yml +++ /dev/null @@ -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 diff --git a/playbook-homepage.yml b/playbook-homepage.yml index c63ea1f..973d80a 100644 --- a/playbook-homepage.yml +++ b/playbook-homepage.yml @@ -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 diff --git a/vars/homepage.yml b/vars/homepage.yml index d0dde75..674cf83 100644 --- a/vars/homepage.yml +++ b/vars/homepage.yml @@ -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"