
рдкреНрд░рд╕реНрддрд╛рд╡
рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ "рдкреЙрдХреЗрдЯ" рдкрд╛рд╕рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рдирд╛рдо - рдбреЛрдХреВ рдХреЗ рд╕рд╛рде рд╣реЗрд░реЛрдХреВ рдХреЗ рд╕рдорд╛рди рд╕реАрдЦрд╛ред рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рдмрд╣реБрдд рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдбреЙрдХ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбреЙрдХреНрдпреВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рдЪ рд╣реИ, рдореИрдВ рдирд┐рд░рд╛рд╢ рдерд╛ рдХрд┐ рдбреЙрдХреНрдпреВ рдореЗрдВ рд╣рд░реЛрдХреВ рдЬреИрд╕реА рдХреЛрдИ рдЯреАрдо рдирд╣реАрдВ рд╣реИ
dokku container:push
dokku container:release
// , :(
tags
, . , image .
tags:create <app> <tag> # Add tag to latest running app image
tags:deploy <app> <tag> # Deploy tagged app image
tags:destroy <app> <tag> # Remove app image tag
Ansible , . dokku, , .
Playbook
playbook , , dokku. Gitlab . .
push-image.dokku.yml---
- name: "DEPLOY APP '{{ appname }}' TO DOKKU"
hosts: dokku_hosts
remote_user: root
gather_facts: false
vars:
tarname: "{{ appname }}__{{ image }}.tar"
upload_dir: "/usr/local/src"
upload_path: "{{ upload_dir }}/{{ tarname }}"
apptag: "{{ upload_tag | default('latest') }}"
dokku_image: "dokku/{{ appname }}:{{ apptag }}"
tasks:
- name: "Archive '{{ image }}' to upload"
register: env
delegate_to: localhost
shell:
cmd: docker image save -o "./{{ tarname }}" {{ image }}
- name: "Upload image '{{ image }}' to dokku at '{{ inventory_hostname }}'"
register: upload
copy:
src: "./{{ tarname }}"
dest: "{{ upload_path }}"
- name: "Log - Upload result"
debug:
var: upload.dest
- name: "Restore uploaded docker image"
register: restore
shell:
cmd: docker image load -i "{{ upload_path }}"
- name: "Log - Restore image"
debug:
var: restore.stdout_lines
- name: "Retag image to '{{ dokku_image }}'"
shell:
cmd: docker tag "{{ image }}" "{{ dokku_image }}"
- name: "Create dokku tag for '{{ dokku_image }}'"
shell:
cmd: dokku tags:create "{{ appname }}" "{{ apptag }}"
- name: "Release '{{ appname }}'"
register: release
shell:
cmd: dokku tags:deploy "{{ appname }}" "{{ apptag }}"
- name: "Log - Release"
debug:
var: release.stdout_lines
ansible dokku
ansible-playbook push-image.dokku.yml -i some_inventory -e "appname=DOKKU_APP_NAME image=DOCKER_IMAGE"
some_inventory
[dokku_hosts]
your.domain.example