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.
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
Whakaritea e Docker
Hangarau
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.
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 (
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-compose
a 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 momake
.
Awhina mo nga tono e waatea ana
make build
- te whakahiato pikitia mai iDockerfile
. I roto i ta maatau tauira i whakamahia e matou nga whakaahua o naianeitimescale
иping
. Engari ko te ahuaapi
e hiahia ana matou ki te kohikohi i te rohe. Koinei tonu te mahi ka mahia i muri i te mahi i tenei whakahau.
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 peneimake start c=timescale
.
Te whakahaere i te ipu tauine taima
Te whakahaere ipu ping
make login-timescale
— takiuru ki te wahanga bash o te iputimescale
.
E rere ana i roto i te ipu taima
make db-shell
- tomokanga kipsql
i roto i te iputimescale
ki te whakahaere i nga patai SQL ki te papaunga raraunga.
Te whakahaere psql i roto i te ipu timescaledb
make stop
— whakamutu ipu.
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
raneimake down c=api
.
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 rotomake 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
E nga kaipānui aroha! Me pehea e mahi aunoa ai a Docker Compose?
Source: will.com