Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles

I nga tau torutoru, ka huri te ahumahi whanaketanga rorohiko i te huringa paradigm. Ko tetahi o enei ahuatanga ka taea te mohio ko te tipu haere o te hiahia ki te kaupapa o nga ratonga miihini. Ahakoa ehara nga microservices i te hangarau hou, no na tata tonu nei i tino piki te rongonui.

Ko nga ratonga monolithic nui kei te whakakapihia e nga ratonga miihini motuhake, motuhake. Ka taea te whakaaro he ratonga moroiti he tono e mahi ana i te kaupapa kotahi, tino motuhake. Hei tauira, he DBMS hononga, he tono Express, he ratonga Solr.

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles

I enei ra, he uaua ki te whakaaro ki te whakawhanake i tetahi punaha rorohiko hou me te kore e whakamahi microservices. Na tenei ahuatanga, ka arahi ia tatou ki te papaahi Docker.

Docker

Tuhinga Docker, i roto i te whakawhanaketanga me te whakatakotoranga o nga ratonga miihini, kua tata ki te paerewa ahumahi. I runga i te paetukutuku kaupapa ka taea e koe te mohio ko Docker anake te papaahi whakaurunga motuhake e taea ai e nga whakahaere te hanga tono, me te tohatoha me te whakahaere i a raatau ki tetahi taiao - mai i nga kapua ranu ki nga punaha taha.

Whakaritea e Docker

Hangarau Whakaritea e Docker i hangaia mo te whirihora i nga tono ipu maha. Ka taea e te kaupapa Docker Compose te maha o nga ipu Docker e hiahia ana te kaihanga o te kaupapa.

I te wa e mahi tahi ana me Docker Compose, ka whakamahia he konae YAML hei whirihora i nga ratonga tono me te whakarite i o raatau taunekeneke ki a raatau ano. No reira he taputapu a Docker Compose mo te whakaahua me te whakahaere i nga tono Docker ipu-maha.

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles
E rua nga ipu e rere ana i runga i te punaha manaaki

GNU Hanga

Te hōtaka make, he taputapu mo te whakaaunoa i te hanga kaupapa me nga whare pukapuka mai i te waehere puna. I te nuinga o te waa, ka taea e taatau te kii make e pa ana ki nga mahi katoa e uru ana ki te whakahaere i nga whakahau noa ki te huri i etahi rauemi whakauru ki etahi puka whakaputa, ki etahi whainga. I roto i to maatau, ko nga whakahau docker-compose ka huri hei whainga waitara (Nga whaainga waea).

Hei korero ki te hotaka make mo nga mea e hiahia ana matou mai i tera, me hiahia he konae Makefile.

Ki ta maatau Makefile ka mau nga whakahau auau docker и docker-compose, i hangaia hei whakaoti rapanga maha. Ara, e korero ana matou mo te whakahiato ipu, mo te tiimata, te whakamutu, te whakaara ano, mo te whakarite i te urunga kaiwhakamahi ki te ipu, mo te mahi me nga raarangi ipu, me te whakaoti i etahi atu raruraru rite.

Whakamahi Take Tikanga mo Docker Compose

Me whakaaro tatou i tetahi tono tukutuku auau e whai ake nei nga waahanga:

  • TimescaleDB pātengi raraunga (Postgres).
  • Express.js tono.
  • Ping (he ipu noa, karekau he mahi motuhake).

Ka hiahia tenei tono kia 3 nga ipu Docker me tetahi konae docker-compose, kei roto nga tohutohu mo te whakahaere i enei ipu. He rereke nga tohu pa ki ia ipu. Hei tauira, me te ipu timescale ka taea te mahi kia rite ki ta raatau mahi me nga papaa raraunga. Ara, ka taea e koe te mahi i nga mahi e whai ake nei:

  • Te takiuru ki te anga Postgres.
  • Kawemai me te kaweake o nga ripanga.
  • hanga pg_dump ripanga, pātengi raraunga rānei.

ipu tono Express.js, expressjs, ka whai mana pea e whai ake nei:

  • Te whakarato raraunga hou mai i te raarangi punaha.
  • Takiuru ki te anga ki te whakahaere i etahi whakahau.

Te taunekeneke ki nga ipu

Ina oti te whakarite korero i waenga i nga ipu ma te whakamahi i te Docker Compose, kua tae ki te wa ki te korero ki aua ipu. Kei roto i te punaha Docker Compose he whakahau docker-compose, kōwhiringa tautoko -f, ka taea e koe te whakawhiti i tetahi konae ki te punaha docker-compose.yml.

Ma te whakamahi i nga kaha o tenei whiringa, ka taea e koe te whakawhāiti i te taunekeneke me te punaha ki nga ipu kua whakahuahia i roto i te konae. docker-compose.yml.

Me titiro ki te ahua o nga taunekeneke me nga ipu ina whakamahi whakahau docker-compose. Ki te whakaaro tatou me uru tatou ki te anga psql, ka penei pea te ahua o nga whakahau:

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

Ko te whakahau ano kaore i te whakamahia hei mahi docker-composea docker, penei pea te ahua:

docker exec -it  edp_timescale_1 psql -Upostgres

Kia mahara ko nga ahuatanga penei he pai ake te whakamahi i te whakahau docker, me te whakahau docker-compose, na tenei ka whakakore i te hiahia ki te mahara ki nga ingoa ipu.

Ko nga whakahau e rua i runga ake nei ehara i te mea uaua. Engari ki te whakamahia e matou he "takai" i roto i te ahua Makefile, ka homai he atanga i roto i te ahua o nga whakahau ngawari me te karanga ano i nga whakahau roa rite, katahi ka tutuki nga hua penei:

make db-shell

Ko reira tino kitea e te whakamahi Makefile he maamaa ake te mahi me nga ipu!

Tauira mahi

I runga i te hoahoa kaupapa i runga ake nei, ka hangaia e matou te konae e whai ake nei 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

Hei whakahaere i te whirihoranga Docker Compose me te taunekeneke ki nga ipu e whakaahuatia ana, ka hangaia e matou te konae e whai ake nei 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

Ko te nuinga o nga whakahau e whakaahuatia ana i konei e pa ana ki nga ipu katoa, engari ma te whakamahi i te whiringa c= ka taea e koe te whakawhāiti i te whānuitanga o te whakahau ki te ipu kotahi.

I muri Makefile kua rite, ka taea e koe te whakamahi penei:

  • make help — te tuku rarangi o nga whakahau katoa e waatea ana mo make.

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles
Awhina mo nga tono e waatea ana

  • make build - te whakahiato pikitia mai i Dockerfile. I roto i ta maatau tauira i whakamahia e matou nga whakaahua o naianei timescale и ping. Engari ko te ahua api e hiahia ana matou ki te kohikohi i te rohe. Koinei tonu te mahi ka mahia i muri i te mahi i tenei whakahau.

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles
Te hanga ipu Docker

  • make start — te whakarewa i nga ipu katoa. Hei whakarewa i te ipu kotahi, ka taea e koe te whakamahi i te whakahau penei make start c=timescale.

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles
Te whakahaere i te ipu tauine taima

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles
Te whakahaere ipu ping

  • make login-timescale — takiuru ki te wahanga bash o te ipu timescale.

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles
E rere ana i roto i te ipu taima

  • make db-shell - tomokanga ki psql i roto i te ipu timescale ki te whakahaere i nga patai SQL ki te papaunga raraunga.

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles
Te whakahaere psql i roto i te ipu timescaledb

  • make stop — whakamutu ipu.

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles
Te whakamutu i te ipu tauine

  • make down — te whakamutu me te tango ipu. Hei tango i tetahi ipu motuhake, ka taea e koe te whakamahi i tenei whakahau e tohu ana i te ipu e hiahiatia ana. Hei tauira - make down c=timescale ranei make down c=api.

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles
Te whakamutu me te whakakore i nga ipu katoa

Ngā putanga

Ahakoa he maha nga whakahau a Docker Compose mo te whakahaere ipu, i etahi wa ka roa, ka uaua ki te maumahara.

Tikanga whakamahi Makefile i awhina i a matou ki te whakarite i te taunekeneke tere me te ngawari ki nga ipu mai i tetahi konae docker-compose.yml. Ara, e korero ana matou mo nga mea e whai ake nei:

  • Ka taunekeneke te kaiwhakawhanake me nga ipu kaupapa e whakaahuatia ana i roto docker-compose.yml, karekau te mahi e pokanoa ki etahi atu ipu rere.
  • Mena ka warewarehia tetahi whakahau, ka taea e koe te whakahaere i te whakahau make help me te tiki awhina mo nga tono e waatea ana.
  • Kaore koe e mahara ki nga rarangi roa o nga tohenga ki te mahi i nga mahi penei i te tango i nga urunga rangitaki hou, te takiuru ranei ki tetahi punaha. Hei tauira, he whakahau penei docker-compose -f docker-compose.yml exec timescale psql -Upostgres ka tahuri ki roto make db-shell.
  • kōnae Makefile Ka taea e koe te urutau ki a ia i te wa e tipu ana te kaupapa. Hei tauira, he ngawari ki te taapiri i tetahi whakahau ki te hanga i te taapiri papaa raraunga, te mahi ranei i etahi atu mahi.
  • Mena ka whakamahia e te roopu nui o nga kaihanga te taua Makefile, ka whakamaarama te mahi tahi me te whakaiti i nga hapa.

PS Ki ta maatau kainga hokohoko he ahua Docker, ka taea te whakauru ki te paato kotahi. Ka taea e koe te tirotiro i te mahi o nga ipu i VPS. Ka whakawhiwhia ki nga kaihoko hou nga ra 3 mo te whakamatautau kore utu.

E nga kaipānui aroha! Me pehea e mahi aunoa ai a Docker Compose?

Tito Docker: Whakamaamaa i o Mahi Ma te whakamahi i nga Makefiles

Source: will.com

Tāpiri i te kōrero