
طول وعرض
میں نے حال ہی میں ہیروکو سے ملتا جلتا ایک "جیب" PaaS کے بارے میں سیکھا ہے جس کا ایک واضح نام ہے - Dokku۔ میں آسانی سے ایپلیکیشن میں سرٹیفکیٹ شامل کرنے کی صلاحیت سے بہت متوجہ ہوا اور باکس سے باہر vhost، اس لیے میں نے اپنی ڈاکر کی تصاویر کو Dokku میں منتقل کرنے کا فیصلہ کیا۔ سچ ہے، مجھے مایوسی ہوئی کہ ڈوکو کے پاس ہیروکو جیسی کمانڈز نہیں ہیں۔
dokku container:push
dokku container:release
// Очень было бы удобно, но еще нет :(ایک ٹیم ہے۔ جو آپ کو تصاویر کو تعینات کرنے کی اجازت دیتا ہے، لیکن تصویر خود اس وقت میزبان پر پہلے سے موجود ہونی چاہیے۔ دوسرے لفظوں میں، آپ کی ابھی بنائی ہوئی مقامی تصویر کو رول آؤٹ کرنے کے لیے، آپ کو پہلے اسے میزبان پر کاپی کرنا ہوگا۔
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 سے واقف ہوں اور میں نے اس کے ساتھ سادہ بیک اینڈ ڈیلیوری پائپ لائنیں بھی بنائی ہیں، اس لیے انتخاب آسان تھا۔ بلاشبہ، میں اس سے تنگ آکر ڈوکو کے لیے ایک پلگ ان لکھ سکتا تھا، لیکن نہیں، ابھی نہیں۔
داستان رقم
یہ پلے بک ایک مقامی تصویر کو آرکائیو کرتی ہے، اسے میزبان کو کاپی کرتی ہے، اسے بحال کرتی ہے اور اسے ڈوکو میں تعینات کرتی ہے۔ Gitlab repo میں پوسٹ کیا گیا۔ اب بھی بہتری کی کافی گنجائش ہے۔
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"کچھ_انوینٹری
[dokku_hosts]
your.domain.exampleماخذ: www.habr.com
