Singulis paucis annis, progressionis industria programmatum exemplar mutationem patitur. Una ex his phaenomenis cognosci potest sicut incrementum studii conceptus microservices. Etsi microservices technologiae novissimae non sunt, nuper tantum popularis literam skyrocketed suam habet.
Magnae officia monolithica nunc substituuntur per micro servitia independentia autonoma. Microservatio parva cogitari potest de applicatione quae uni et subtilissimo fini inservit. Exempli gratia, DBMS relationis, applicatio expressa, servitium Solr.
His diebus difficile est fingere novam systema programmatum sine microservices utendo. Haec res vicissim nos ad suggestum Docker ducit.
Docker
platform
Epistola Docker
Technology
Cum opus cum Docker Componere, fasciculus YAML ad applicationes usus configurare et eorum commercium inter se componere. Docker Componere igitur instrumentum est ad multi- vasorum applicationes ad describendas et ad currendum Docker.
Duo vasa currens in exercitum systematis
GNU make
progressio make
essentialiter instrumentum ad programmata et bibliothecas aedificandas e fonte codice automandi. Fere possumus dicere make
applicabilis est ad quemvis processum qui infert mandata arbitraria exequenda, ut materiam aliquam inputationem ad aliquam formam output, ad aliquem metam transfundat. In nobis, mandata docker-compose
transformabitur in proposita abstracta (
Dicere progressio make
de eo quod velimus, lima nobis opus est Makefile
.
In nostro Makefile
continebit iustum imperium docker
ΠΈ docker-compose
quae ad multas difficultates solvendas ordinantur. Nempe loquimur de coeundi vase, de incipiendo, claudendo, deprimendo, de ordinando login utentis continentis, de operando cum tigna, et de solvendis aliis similibus quaestionibus.
Typical Usus Causae pro Docker compone
Cogitemus iustam applicationem telam quae sequentium partium habet:
- TimescaleDB database (Postgres).
- Applicatio express.js.
- Ping (modo vas, nihil speciale facit).
Haec applicatione opus erit 3 vasis Docker et lima docker-compose
quae contineat mandatis his vasis administrandi. Singula continens puncta diversa habebunt. Verbi gratia, cum vase timescale
fere eodem modo operari poterit ut cum databases operantur. Nimirum tibi permittit ut sequentes actiones exsequaris;
- Logging into the Postgres testam.
- Tabulae importare et exportare.
- creatura
pg_dump
mensae vel databases.
Applicatio express.js continens; expressjs
habeatis sequentes facultates;
- Novas notitias e stipes systematis praebens.
- Positum testam ad facienda mandata.
Interacting cum Containers
Cum communicationem constituimus inter vasa utens Docker Componere, tempus est cum illis vasis communicare. In Docker compone ratio est mandatum docker-compose
, optio supporting -f
, quod te permittit ut fasciculum ad systema transferas docker-compose.yml
.
Facultates huius optionis utens, commercium cum systemate limitare potes solum illis vasis quae in tabella nominantur docker-compose.yml
.
Inspice quid interationes cum vasis vide ut cum usura mandata docker-compose
. Si fingimus nos in concha necesse esse stipes psql
tunc mandata debita viderentur;
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Idem mandatum non est faciendum docker-compose
quod docker
viderem sic;
docker exec -it edp_timescale_1 psql -Upostgres
Nota quod in talibus semper praeferendum est uti praecepto docker
et mandatum docker-compose
et sic excludit necessitatem reminiscendi nomina continens.
Utrumque praeceptum praemissorum non est difficile. Sed si "involucra" in forma usus est Makefile
quae nobis in forma mandatorum simplicium praeberet, et ipsa similia longa mandata vocaret, tum idem eventus sic fieri posset;
make db-shell
Apparet, usum Makefile
quanto facilius vasis laborat!
exemplum opus
Fundatur in schemate supra projecto, hunc fasciculum creabimus 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
Ad Docker regere configurationem compone et cum vasis quibus describit penitus, hunc fasciculum creabimus 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
Pleraque mandata hic descripta applicant omnibus vasis, optione usus c=
sino te limitare ambitum mandati ad unum continentem.
Post Makefile
paratus, uti potes;
make help
- fiebant index omnium mandatorum available formake
.
Auxilium praesto ad imperium
make build
- simulacrum eDockerfile
. In exemplo nostro imagines usus esttimescale
ΠΈping
. sed imagoapi
colligere volumus localiter. Hoc ipsum est, quod post mandatum hoc fiet.
Aedificationem Docker continens
make start
β omnibus vasis deductis. Ad unum solum deducunt continentem, sicut praeceptum uti potesmake start c=timescale
.
Currens timescale continens
Currentem in ping continens
make login-timescale
- login ut vercundus sessionem continentistimescale
.
Vercundus currit in vase timescale
make db-shell
- introitus topsql
in vastimescale
facere SQL quaero contra datorum.
Currentem psql in timescaledb continens
make stop
β sinc vasis.
Restitit timescale continens
make down
β vasis desinendi et removendi. Ut vas specificum removeas, hoc mandatum uti potes ut continens desideratum denotans. Exempli gratia -make down c=timescale
autmake down c=api
.
Reprimendis et delendo omnia vasa
results
Quamvis Docker Componere nobis mandatum opulentum dat pro vasis administrandis, interdum haec mandata longa et difficilia esse possunt meminisse.
Modus usus Makefile
adiuvisti nos constituere vivos et faciles commercium cum vasis ex lima docker-compose.yml
. Nempe de his loquimur;
- Elit interacts solum cum vasis exertis descriptis
docker-compose.yml
opus non impedit aliis vasis decursibus. - In eventu, ut mandatum quoddam oblitus est, mandatum exequi potes
make help
atque auxilium praesto mandata. - Non meministi longas argumentorum indices ad actiones exercendas sicut recentissimas iniuriarum viscus vel colligationem in systemate comparare. Exempli gratia, praeceptum simile
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
vertit inmake db-shell
. - lima
Makefile
Mollius potes ad eam accommodare sicut res increscit. Exempli causa, facile est mandatum addere ut tergum database vel aliam actionem exerceat. - Si magna team of developers eodem utitur
Makefile
hic rivos collaborationem et errores minuit.
PS In nostro
Carissimi legentibus! Quomodo tu compone automate Docker?
Source: www.habr.com