Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles

Unggal sababaraha taun, industri pamekaran software ngalaman parobahan paradigma. Salah sahiji fénoména ieu tiasa dikenal salaku minat anu ningkat dina konsép microservices. Sanajan microservices sanes téhnologi pang anyarna, ngan nembe geus popularitasnya sacara harfiah skyrocketed.

Ladenan monolitik anu ageung ayeuna diganti ku jasa mikro otonom anu mandiri. A microservice bisa dianggap salaku hiji aplikasi nu boga tujuan tunggal jeung pisan husus. Salaku conto, éta tiasa janten DBMS hubungan, aplikasi Express, jasa Solr.

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles

Dinten ieu, sesah ngabayangkeun ngembangkeun sistem parangkat lunak énggal tanpa nganggo jasa mikro. Sareng kaayaan ieu, giliran kami, nuju ka platform Docker.

Docker

panggung Docker, dina ngembangkeun sarta deployment of microservices, geus jadi ampir standar industri. Dina situs wéb proyék anjeun tiasa terang yén Docker mangrupikeun hiji-hijina platform wadahna mandiri anu ngamungkinkeun organisasi pikeun nyiptakeun aplikasi naon waé, ogé ngadistribusikaeun sareng ngajalankeunana di lingkungan mana waé - tina awan hibrid ka sistem tepi.

Docker Tulis

teknologi Docker Tulis dirancang pikeun ngonpigurasikeun aplikasi multi-wadah. Proyék Docker Compose tiasa ngandung saloba wadah Docker sakumaha anu diperyogikeun ku panyipta proyék.

Nalika damel sareng Docker Compose, file YAML dianggo pikeun ngonpigurasikeun jasa aplikasi sareng ngatur interaksina. Ku kituna Docker Compose mangrupikeun alat pikeun ngajelaskeun sareng ngajalankeun aplikasi Docker multi-wadah.

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles
Dua peti ngajalankeun dina sistem host

GNU Ngadamel

program make, dasarna mangrupa alat pikeun ngajadikeun otomatis gedong program jeung perpustakaan tina kode sumber. Sacara umum, urang bisa disebutkeun yen make manglaku ka sagala prosés nu ngalibatkeun executing paréntah sawenang pikeun transformasi sababaraha bahan input kana sababaraha formulir kaluaran, kana sababaraha tujuan. Dina kasus urang, paréntah docker-compose bakal dirobah jadi tujuan abstrak (Sasaran telepon).

Pikeun ngabejaan program make ngeunaan naon urang hayang ti eta, urang peryogi file a Makefile.

Di urang Makefile bakal ngandung paréntah biasa docker и docker-compose, nu dirancang pikeun ngajawab loba masalah. Nyaéta, urang ngobrolkeun ngeunaan assembling wadahna, ngeunaan ngamimitian éta, ngeureunkeunana, ngamimitian deui, ngeunaan ngatur login pangguna kana wadahna, ngeunaan damel sareng log wadahna, sareng ngeunaan ngarengsekeun masalah anu sami.

Kasus Pamakéan Biasa pikeun Docker Compose

Hayu urang bayangkeun aplikasi wéb biasa anu ngagaduhan komponén ieu:

  • Database TimescaleDB (Postgres).
  • aplikasi Express.js.
  • Ping (ngan wadahna, teu ngalakukeun nanaon husus).

Aplikasi ieu peryogi 3 wadah Docker sareng file docker-compose, nu ngandung parentah pikeun ngatur peti ieu. Unggal wadah bakal gaduh touchpoints béda. Contona, ku wadah timescale bakal tiasa dianggo kirang langkung sami sareng aranjeunna tiasa dianggo sareng pangkalan data. Nyaéta, éta ngamungkinkeun anjeun pikeun ngalakukeun tindakan ieu:

  • Asup kana cangkang Postgres.
  • Impor jeung ékspor tabel.
  • ciptaan pg_dump tabél atawa database.

Wadah aplikasi Express.js, expressjs, tiasa gaduh kamampuan di handap ieu:

  • Nyadiakeun data anyar tina log sistem.
  • Login kana cangkang pikeun ngaéksekusi paréntah anu tangtu.

Interaksi jeung Wadahna

Sakali kami parantos nyetél komunikasi antara wadah nganggo Docker Compose, waktosna pikeun komunikasi sareng wadah éta. Dina sistem Docker Compose aya paréntah docker-compose, pilihan ngarojong -f, anu ngamungkinkeun anjeun nransferkeun file kana sistem docker-compose.yml.

Nganggo kamampuan pilihan ieu, anjeun tiasa ngawates interaksi sareng sistem ngan ukur pikeun wadah anu disebatkeun dina file. docker-compose.yml.

Hayu urang tingali kumaha interaksi sareng wadahna nalika nganggo paréntah docker-compose. Upami urang ngabayangkeun yén urang kedah asup kana cangkang psql, teras paréntah anu saluyu tiasa katingali sapertos kieu:

docker-compose -f docker-compose.yml exec timescale psql -Upostgres

Paréntah anu sami anu henteu dianggo pikeun ngaéksekusi docker-composejeung docker, sigana sapertos kieu:

docker exec -it  edp_timescale_1 psql -Upostgres

Punten dicatet yén dina kasus sapertos kitu langkung saé ngagunakeun paréntah docker, jeung paréntah docker-compose, sabab ieu ngaleungitkeun kabutuhan pikeun nginget nami wadahna.

Kadua paréntah di luhur henteu sesah. Tapi lamun urang dipaké "wrapper" dina formulir Makefile, anu bakal masihan kami antarbeungeut dina bentuk paréntah saderhana sareng nyalira nyauran paréntah panjang anu sami, teras hasil anu sami tiasa dihontal sapertos kieu:

make db-shell

Ieu rada atra yén pamakéan Makefile ngajadikeun gawé kalawan peti loba gampang!

Conto gawé

Dumasar kana diagram proyék di luhur, urang bakal nyiptakeun file di handap ieu docker-compose.yml:

version: '3.3'
services:
    api:
        build: .
        image: mywebimage:0.0.1
        ports:
            - 8080:8080
        volumes:
            - /app/node_modules/
        depends_on:
            - timescale
        command: npm run dev
        networks:
            - webappnetwork
    timescale:
        image: timescale/timescaledb-postgis:latest-pg11
        environment:
          - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=postgres
        command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"]
        volumes:
          - ./create_schema.sql:/docker-entrypoint-initdb.d/create_schema.sql
        networks:
           - webappnetwork
    ping:
       image: willfarrell/ping
       environment:
           HOSTNAME: "localhost"
           TIMEOUT: 300
networks:
   webappnetwork:
       driver: bridge

Pikeun ngatur konfigurasi Docker Compose sareng berinteraksi sareng wadah anu dijelaskeun, kami bakal nyiptakeun file di handap ieu Makefile:

THIS_FILE := $(lastword $(MAKEFILE_LIST))
.PHONY: help build up start down destroy stop restart logs logs-api ps login-timescale login-api db-shell
help:
        make -pRrq  -f $(THIS_FILE) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
build:
        docker-compose -f docker-compose.yml build $(c)
up:
        docker-compose -f docker-compose.yml up -d $(c)
start:
        docker-compose -f docker-compose.yml start $(c)
down:
        docker-compose -f docker-compose.yml down $(c)
destroy:
        docker-compose -f docker-compose.yml down -v $(c)
stop:
        docker-compose -f docker-compose.yml stop $(c)
restart:
        docker-compose -f docker-compose.yml stop $(c)
        docker-compose -f docker-compose.yml up -d $(c)
logs:
        docker-compose -f docker-compose.yml logs --tail=100 -f $(c)
logs-api:
        docker-compose -f docker-compose.yml logs --tail=100 -f api
ps:
        docker-compose -f docker-compose.yml ps
login-timescale:
        docker-compose -f docker-compose.yml exec timescale /bin/bash
login-api:
        docker-compose -f docker-compose.yml exec api /bin/bash
db-shell:
        docker-compose -f docker-compose.yml exec timescale psql -Upostgres

Seuseueurna paréntah anu dijelaskeun di dieu manglaku ka sadaya wadah, tapi nganggo pilihan c= ngidinan Anjeun pikeun ngawatesan lingkup paréntah pikeun hiji wadah.

sanggeus Makefile siap, anjeun tiasa nganggo sapertos kieu:

  • make help - ngaluarkeun daptar sadaya paréntah sadia pikeun make.

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles
Pitulung dina paréntah sadia

  • make build - assembling hiji gambar tina Dockerfile. Dina conto urang kami nganggo gambar anu tos aya timescale и ping. Tapi gambar api urang rék ngumpulkeun lokal. Ieu persis naon anu bakal dilakukeun saatos ngalaksanakeun paréntah ieu.

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles
Ngawangun wadah Docker

  • make start - ngaluncurkeun sadaya wadah. Pikeun ngajalankeun ngan hiji wadah, anjeun tiasa nganggo paréntah kawas make start c=timescale.

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles
Ngajalankeun wadah skala waktu

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles
Ngajalankeun wadah ping

  • make login-timescale - login ka sesi bash wadahna timescale.

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles
Ngajalankeun bash dina wadah skala waktu

  • make db-shell - lawang ka psql dina hiji wadah timescale pikeun ngaéksekusi queries SQL ngalawan database.

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles
Ngajalankeun psql dina wadah timescaledb

  • make stop - eureun wadahna.

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles
Ngeureunkeun wadah skala waktu

  • make down - eureun jeung nyoplokkeun wadahna. Pikeun miceun wadahna khusus, anjeun tiasa nganggo paréntah ieu pikeun nangtukeun wadah anu dipikahoyong. Salaku conto - make down c=timescale atawa make down c=api.

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles
Ngeureunkeun sareng mupus sadaya wadah

hasil

Sanaos Docker Compose masihan kami seueur paréntah pikeun ngatur wadah, sakapeung paréntah ieu tiasa panjang sareng sesah diinget.

Métode pamakean Makefile mantuan kami ngadegkeun interaksi gancang jeung gampang jeung peti tina file a docker-compose.yml. Nyaéta, urang ngobrol ngeunaan di handap ieu:

  • Pamekar ngan ukur berinteraksi sareng wadah proyék anu dijelaskeun dina docker-compose.yml, pagawean teu diganggu ku wadah ngajalankeun séjén.
  • Upami aya paréntah anu hilap, anjeun tiasa ngaéksekusi paréntahna make help tur meunangkeun pitulung dina Paréntah sadia.
  • Anjeun teu kedah nginget daptar panjang argumen pikeun ngalakukeun tindakan sapertos kéngingkeun éntri log panganyarna atanapi log in kana sistem. Contona, paréntah kawas docker-compose -f docker-compose.yml exec timescale psql -Upostgres kabukti kana make db-shell.
  • file Makefile Anjeun tiasa sacara fleksibel adaptasi kana éta nalika proyékna tumbuh. Contona, gampang pikeun nambahkeun paréntah pikeun nyieun cadangan database atawa ngalakukeun sagala aksi séjén.
  • Lamun tim badag pamekar ngagunakeun sarua Makefile, ieu streamlines kolaborasi jeung ngurangan kasalahan.

PS Di urang pasar aya gambar Docker, nu bisa dipasang dina hiji klik. Anjeun tiasa pariksa operasi wadahna di VPS. Sadaya klien anyar dibéré 3 dinten tés gratis.

Pamiarsa Hadirin! Kumaha anjeun ngajadikeun otomatis Docker Compose?

Docker Compose: Nyederhanakeun Gawé Anjeun Nganggo Makefiles

sumber: www.habr.com

Tambahkeun komentar