рдбреЙрдХреНрдпреВ рдЫрд╡рд┐ рдХреЛ рдбреЙрдХреНрдпреВ рдХреЛ рдПрдВрдмрд┐рдмрд▓ рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд рдХрд░реЗрдВ

рдЫрд╡рд┐


рдкреНрд░рд╕реНрддрд╛рд╡


рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ "рдкреЙрдХреЗрдЯ" рдкрд╛рд╕рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рдирд╛рдо - рдбреЛрдХреВ рдХреЗ рд╕рд╛рде рд╣реЗрд░реЛрдХреВ рдХреЗ рд╕рдорд╛рди рд╕реАрдЦрд╛ред рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рдмрд╣реБрдд рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдбреЙрдХ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбреЙрдХреНрдпреВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рдЪ рд╣реИ, рдореИрдВ рдирд┐рд░рд╛рд╢ рдерд╛ рдХрд┐ рдбреЙрдХреНрдпреВ рдореЗрдВ рд╣рд░реЛрдХреВ рдЬреИрд╕реА рдХреЛрдИ рдЯреАрдо рдирд╣реАрдВ рд╣реИ


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


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

All Articles