
Dibaji
Hivi majuzi nilijifunza juu ya PaaS "ya ukubwa wa mfukoni" sawa na Heroku iliyo na jina dhahiri Dokku. Nilivutiwa sana na uwezo wa kuongeza cheti kwa urahisi kwa programu na vhost nje ya boksi, kwa hivyo niliamua kuhamishia picha zangu za Docker hadi Dokku. Walakini, nilikatishwa tamaa kuwa Dokku haina amri kama za Heroku.
dokku container:push
dokku container:release
// Очень было бы удобно, но еще нет :(Kuna timu ambayo hukuruhusu kupeleka picha, lakini picha yenyewe lazima iwe tayari kwenye mwenyeji wakati huo. Kwa maneno mengine, ili kupeleka picha mpya iliyoundwa ndani, kwanza unahitaji kuinakili kwa mwenyeji.
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 tagNinaifahamu Ansible na hata nimeunda mabomba rahisi ya uwasilishaji nayo, kwa hivyo chaguo lilikuwa rahisi. Ningeweza kwenda kwa shida ya kuandika programu-jalizi ya dokku, lakini hapana, sio sasa.
Kitabu cha kucheza
Kitabu hiki cha kucheza huweka picha ya ndani kwenye kumbukumbu, kuinakili kwa seva pangishi, kuirejesha, na kuituma kwa Dokku. Nimeichapisha kwa repo langu la Gitlab. Bado kuna nafasi nyingi za kuboresha.
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
Inachukuliwa kuwa Ansible tayari imewekwa kwenye mashine ya ndani na Dokku tayari imewekwa kwenye jeshi.
Itumie hivi
ansible-playbook push-image.dokku.yml -i some_inventory -e "appname=DOKKU_APP_NAME image=DOCKER_IMAGE"baadhi_hesabu
[dokku_hosts]
your.domain.exampleChanzo: mapenzi.com
