แงแแแแ แ แแแแแแแแ แฌแแแแฌแแแจแ, แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแแแแแแ แแแแก แแแแฃแกแขแ แแ แแแแแชแแแก แแแ แแแแแแแก แชแแแแแแแแก. แแ แ-แแ แแ แแกแแแ แคแแแแแแแ แจแแแซแแแแ แแฆแแแ แแแฃแ แแฅแแแก แ แแแแ แช แแแแ แแกแแ แแแกแแแแก แแแแชแแคแชแแแกแแแแ แแแแ แแ แแแขแแ แแกแ. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแแแ แแกแแ แแแกแแแ แแ แแ แแก แฃแแฎแแแกแ แขแแฅแแแแแแแ, แแแกแ แแแแฃแแแ แแแ แแฎแแแแ แแฎแแแฎแแแก แแแแแแ แแ.
แแแแ แแแแแแแแฃแ แ แกแแ แแแกแแแ แแฎแแ แฉแแแแชแแแแแฃแแแ แแแแแฃแแแแแแแแ, แแแขแแแแแแฃแ แ แแแแ แแกแแ แแแกแแแแ. แแแแ แแกแแ แแแกแ แจแแแซแแแแ แฉแแแแแแแแก, แ แแแแ แช แแแแแแแชแแ, แ แแแแแแช แแแกแแฎแฃแ แแแ แแ แ แแ แซแแแแแ แแแแแ แแขแฃแ แแแแแแก. แแแแแแแแแ, แแก แจแแแซแแแแ แแงแแก แ แแแแชแแฃแ แ DBMS, Express แแแแแแแชแแ, Solr แกแแ แแแกแ.
แแ แแฆแแแแจแ แซแแแแ แฌแแ แแแกแแแแแแแ แแฎแแแ แแ แแแ แแแฃแแ แกแแกแขแแแแก แจแแแฃแจแแแแแ แแแแ แแกแแ แแแกแแแแก แแแแแงแแแแแแก แแแ แแจแ. แแ แแก แกแแขแฃแแชแแ, แแแแแก แแฎแ แแ, แแแแแแงแแแแก Docker แแแแขแคแแ แแแแแ.
docker
แแแแขแคแแ แแ
Docker แจแแแแแแ
ะขะตั
ะฝะพะปะพะณะธั
Docker Compose-แแแ แแฃแจแแแแแกแแก YAML แคแแแแ แแแแแแงแแแแแ แแแแแแแชแแแก แกแแ แแแกแแแแก แแแแคแแแฃแ แแชแแแกแ แแ แแ แแแแแแแแแ แฃแ แแแแ แแฅแแแแแแแก แแ แแแแแแแแแกแแแแก. แแแ แแแแ, Docker Compose แแ แแก แแแกแขแ แฃแแแแขแ แแ แแแแ แแแแขแแแแแ แแก Docker แแแแแแแชแแแแแก แแฆแฌแแ แแกแแแแก แแ แแแกแแจแแแแแ.
แแ แ แแแแขแแแแแ แ แแฃแจแแแแก แแแกแแแแซแแ แกแแกแขแแแแแ
GNU แฉแแแแแ
แแ แแแ แแแ make
, แแ แกแแแแแแ แแ แแก แแแกแขแ แฃแแแแขแ แฌแงแแ แแก แแแแแแแ แแ แแแ แแแแแแกแ แแ แแแแแแแแแแแแแก แแแแแแก แแแขแแแแขแแแแชแแแกแแแแก. แแแแแแแ, แจแแแแแซแแแ แแแฅแแแ make
แแ แชแแแแแแ แแแแแกแแแแ แแ แแชแแกแแ, แ แแแแแแช แแฃแแแกแฎแแแแก แแแแแแแแฃแ แ แแ แซแแแแแแแแก แจแแกแ แฃแแแแแก แแแแแแ แแ แจแแงแแแแแก แแแกแแแแก แแแแแฅแชแแแแก แ แแฆแแช แแแแแแแแแ แคแแ แแแจแ, แ แแฆแแช แแแแแแแแ. แฉแแแแก แจแแแแฎแแแแแจแ, แแ แซแแแแแแแ docker-compose
แแแ แแแแฅแแแแแ แแแกแขแ แแฅแขแฃแ แแแแแแแแ (
แ แแ แแฃแแฎแ แ แแ แแแ แแแแก make
แแแแก แจแแกแแฎแแ, แแฃ แ แ แแแแแแ แแแกแแแ, แแแญแแ แแแแ แคแแแแ Makefile
.
แฉแแแแก Makefile
แจแแแชแแแก แ แแแฃแแแ แฃแ แแ แซแแแแแแแก docker
ะธ docker-compose
, แ แแแแแแแช แจแแฅแแแแแแ แแ แแแแแ แแ แแแแแแแก แแแแแกแแญแ แแแแ. แแแ แซแแ, แกแแฃแแแ แแ แแแแขแแแแแ แแก แแฌแงแแแแแ, แแแก แแแฌแงแแแแแ, แแแฉแแ แแแแแ, แแแแแขแแแ แแแแแ, แแแแขแแแแแ แจแ แแแแฎแแแ แแแแแก แจแแกแแแแก แแ แแแแแแแแแแ, แแแแขแแแแแ แแก แแฃแ แแแแแแแแ แแฃแจแแแแแแ แแ แกแฎแแ แแกแแแแกแ แแ แแแแแแแแแก แแแแแญแ แแแ.
แขแแแแฃแ แ แแแแแงแแแแแแก แจแแแแฎแแแแแแ Docker Compose-แแกแแแแก
แฌแแ แแแแแแแแแแ แฉแแแฃแแแแ แแแ แแแ แแแแแแแชแแ, แ แแแแแกแแช แแฅแแก แจแแแแแแ แแแแแแแแแขแแแ:
- TimescaleDB แแแแแชแแแแ แแแแ (Postgres).
- Express.js แแแแแแแชแแ.
- Ping (แฃแแ แแแแ แแแแขแแแแแ แ, แแ แแคแแ แก แแแแกแแแฃแแ แแแฃแแก แแ แแแแแแแก).
แแ แแแแแแแชแแแก แแแกแญแแ แแแแ 3 Docker แแแแขแแแแแ แ แแ แคแแแแ docker-compose
, แ แแแแแแช แจแแแชแแแก แแ แแแแขแแแแแ แแแแก แแแ แแแแก แแแกแขแ แฃแฅแชแแแก. แแแแแแฃแ แแแแขแแแแแ แก แแฅแแแแ แกแฎแแแแแกแฎแแ แจแแฎแแแแก แฌแแ แขแแแ. แแแแแแแแแ, แแแแขแแแแแ แแ timescale
แจแแกแแซแแแแแแ แแฅแแแแ แแฃแจแแแแ แแแแฎแแแแแแ แแกแ, แ แแแแ แช แแกแแแ แแฃแจแแแแแ แแแแแชแแแแ แแแแแแแแ. แแแ แซแแ, แแก แกแแจแฃแแแแแแก แแแซแแแแ แจแแแกแ แฃแแแ แจแแแแแแ แแแฅแแแแแแแแ:
- แจแแกแแแ แแแกแขแแ แแกแแก แแแ แกแจแ.
- แแแแแแแแแก แแแแแ แขแ แแ แแฅแกแแแ แขแ.
- แจแแฅแแแ
pg_dump
แชแฎแ แแแแแ แแ แแแแแชแแแแ แแแแแแ.
Express.js แแแแแชแฎแแแแก แแแแขแแแแแ แ, expressjs
, แจแแแซแแแแ แฐแฅแแแแแก แจแแแแแแ แจแแกแแซแแแแแแแแแ:
- แแฎแแแ แแแแแชแแแแแแก แแแฌแแแแแ แกแแกแขแแแแก แแฃแ แแแแแแแ.
- แจแแแแ shell-แจแ แแแ แแแแฃแแ แแ แซแแแแแแแแก แจแแกแแกแ แฃแแแแแแ.
แแแแขแแแแแ แแแแแ แฃแ แแแแ แแแแ
แแแก แจแแแแแ แ แแช แแแแแแงแแ แแแ แแแแฃแแแแแชแแแก แแแแขแแแแแ แแแก แจแแ แแก Docker Compose-แแก แแแแแงแแแแแแ, แแ แแ แแ แแแแขแแแแแ แแแแแ แแแแฃแแแแแชแแ. Docker Compose แกแแกแขแแแแจแ แแ แแก แแ แซแแแแแ docker-compose
, แแแแฎแแแ แ แแแ แแแแขแ -f
, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแขแแแแ แคแแแแ แกแแกแขแแแแจแ docker-compose.yml
.
แแ แแแ แแแแขแ แแก แจแแกแแซแแแแแแแแแแก แแแแแงแแแแแแ, แแฅแแแ แจแแแแซแแแแ แจแแแฆแฃแแแ แกแแกแขแแแแกแแแ แฃแ แแแแ แแฅแแแแแแ แแฎแแแแ แแ แแแแขแแแแแ แแแแ, แ แแแแแแแช แแแแแแแแฃแแแ แคแแแแจแ docker-compose.yml
.
แแแแแ แจแแแฎแแแแ แ แแแแ แแแแแแงแฃแ แแแ แแแแขแแแแแ แแแแแ แฃแ แแแแ แแฅแแแแแแ แแ แซแแแแแแแแก แแแแแงแแแแแแกแแก docker-compose
. แแฃ แฌแแ แแแแแแแแแ, แ แแ แฉแแแ แแแญแแ แแแแ แจแแกแแแ shell-แจแ psql
, แแแจแแ แจแแกแแแแแแกแ แแ แซแแแแแแแ แจแแแซแแแแ แแกแ แแแแแแงแฃแ แแแแแแก:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
แแแแแ แแ แซแแแแแ, แ แแแแแแช แแ แแแแแแงแแแแแ แจแแกแแกแ แฃแแแแแแ docker-compose
แฎแแแ docker
, แจแแแซแแแแ แแกแ แแแแแแงแฃแ แแแแแแก:
docker exec -it edp_timescale_1 psql -Upostgres
แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แแกแแ แจแแแแฎแแแแแแจแ แงแแแแแแแแก แกแแกแฃแ แแแแแ แแ แซแแแแแแก แแแแแงแแแแแ docker
แแ แแฃแแแ docker-compose
, แ แแแแแ แแก แแแแแ แแชแฎแแแก แแแแขแแแแแ แแก แกแแฎแแแแแแก แแแแแฎแกแแแ แแแแก แแฃแชแแแแแแแแแก.
แแแแแ แฉแแแแแแแแแ แแ แแแ แแ แซแแแแแ แแ แช แแกแ แ แแฃแแแ. แแแแ แแ แแฃ แแแแแแแงแแแแแแแ โแจแแคแฃแแแแกโ แคแแ แแแจแ Makefile
, แ แแแแแแช แแแแแชแแแแ แแแขแแ แคแแแกแก แแแ แขแแแ แแ แซแแแแแแแแก แกแแฎแแ แแ แแแแแ แฃแฌแแแแแแ แแกแแแแก แแ แซแแ แแ แซแแแแแแแก, แแแจแแ แแแแแ แจแแแแแแแแก แแแฆแฌแแแ แจแแแซแแแแ แแกแ:
make db-shell
แกแแแกแแแแ แแจแแแ แแ, แ แแ แแแแแงแแแแแ Makefile
แแแชแแแแแแ แแแแแแแแแก แแแแขแแแแแ แแแแแ แแฃแจแแแแแก!
แกแแแฃแจแแ แแแแแแแแ
แแแแแแฆแแแจแแฃแแ แแ แแแฅแขแแก แแแแแ แแแแแ แแแงแ แแแแแแ แฉแแแ แจแแแฅแแแแ แจแแแแแ แคแแแแก 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
Docker Compose-แแก แแแแคแแแฃแ แแชแแแก แกแแแแ แแแแแ แแ แแแก แแแแ แแฆแฌแแ แแ แแแแขแแแแแ แแแแแ แฃแ แแแแ แแแแแกแแแแก, แฉแแแ แจแแแฅแแแแ แจแแแแแ แคแแแแก 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
แแฅ แแฆแฌแแ แแแ แแ แซแแแแแแแแก แฃแแแขแแกแแแ แแ แชแแแแแแ แงแแแแ แแแแขแแแแแ แแ, แแแแ แแ แแ แแคแชแแแก แแแแแงแแแแแแ c=
แกแแจแฃแแแแแแก แแแซแแแแ แจแแแฆแฃแแแ แแ แซแแแแแแก แคแแ แแแแแ แแ แแ แแแแขแแแแแ แแ.
แจแแแแแ Makefile
แแแแแแ, แจแแแแซแแแแ แแแแแแงแแแแ แแก แแกแ:
make help
- แงแแแแ แแ แซแแแแแแก แกแแแก แแแชแแแ, แ แแแแแแช แฎแแแแแกแแฌแแแแแแmake
.
แแแฎแแแ แแแ แฎแแแแแกแแฌแแแแแ แแ แซแแแแแแแแก แจแแกแแฎแแ
make build
- แกแฃแ แแแแก แแฌแงแแแDockerfile
. แฉแแแแก แแแแแแแแจแ แแแแแแแงแแแแ แแ แกแแแฃแแ แกแฃแ แแแแแtimescale
ะธping
. แแแแ แแ แแแแแกแแฎแฃแแแแapi
แฉแแแ แแแแแแ แแแแแแแแ แแแแ แจแแแ แแแแแ. แแก แแ แแก แแฃแกแขแแ แแก, แ แแช แแแแแแแแแ แแ แแ แซแแแแแแก แจแแกแ แฃแแแแแก แจแแแแแ.
Docker แแแแขแแแแแ แแก แแจแแแแแ
make start
- แงแแแแ แแแแขแแแแแ แแก แแแจแแแแ. แแฎแแแแ แแ แแ แแแแขแแแแแ แแก แแแกแแจแแแแแ, แจแแแแซแแแแ แแแแแแงแแแแ แแ แซแแแแแ, แ แแแแ แแชแแmake start c=timescale
.
แแ แแแก แแแกแจแขแแแแก แแแแขแแแแแ แแก แแแจแแแแ
แแแแ แแแแขแแแแแ แแก แแแจแแแแ
make login-timescale
โ แจแแแแ แแแแขแแแแแ แแก bash แกแแกแแแแtimescale
.
แแแจแแก แแแจแแแแ แแ แแแก แแแกแจแขแแแแก แแแแขแแแแแ แจแ
make db-shell
- แจแแกแแกแแแแแpsql
แแแแขแแแแแ แจแtimescale
แแแแแชแแแแ แแแแแก แฌแแแแแฆแแแแ SQL แแแแฎแแแแแแแก แจแแกแแกแ แฃแแแแแแ.
psql-แแก แแแจแแแแ timescaledb แแแแขแแแแแ แจแ
make stop
- แจแแกแแฉแแ แแแแแ แแแแขแแแแแ แแแ.
แแ แแแก แแแกแจแขแแแแก แแแแขแแแแแ แแก แแแฉแแ แแแ
make down
- แแแแขแแแแแ แแแแก แจแแฉแแ แแแ แแ แแแแฆแแแ. แแแแแ แแขแฃแแ แแแแขแแแแแ แแก แแแแกแแฆแแแแ, แจแแแแซแแแแ แแแแแแงแแแแ แแก แแ แซแแแแแ แกแแกแฃแ แแแแ แแแแขแแแแแ แแก แแแแแแแแแ. แฒแแแแแแแแ -make down c=timescale
แแmake down c=api
.
แงแแแแ แแแแขแแแแแ แแก แจแแฉแแ แแแ แแ แฌแแจแแ
แจแแแแแแแ
แแแฃแฎแแแแแแ แแแแกแ, แ แแ Docker Compose แแแแซแแแแก แแ แซแแแแแแแแก แแแแแแ แแแแแแแฅแขแก แแแแขแแแแแ แแแแก แแแ แแแแกแแแแก, แแแแฏแแ แแก แแ แซแแแแแแแ แจแแแซแแแแ แแแฎแแแก แฎแแแแ แซแแแแ แแ แ แแฃแแ แแแกแแแแฎแกแแแ แแแแแ.
แแแแแงแแแแแแก แแแแแแ Makefile
แแแแแแฎแแแ แ แคแแแแแแแ แแแแขแแแแแ แแแแแ แกแฌแ แแคแ แแ แแแ แขแแแ แฃแ แแแแ แแฅแแแแแแแก แแแแงแแ แแแแจแ docker-compose.yml
. แแแ แซแแ, แกแแฃแแแ แแ แจแแแแแแแ:
- แแแแแแแแแ แ แฃแ แแแแ แแฅแแแแแแก แแฎแแแแ แแ แแแฅแขแจแ แแฆแฌแแ แแ แแแแขแแแแแ แแแแแ
docker-compose.yml
, แแฃแจแแแแแก แฎแแแก แแ แฃแจแแแก แกแฎแแ แแแจแแแแฃแแ แแแแขแแแแแ แแแ. - แแ แจแแแแฎแแแแแจแ, แแฃ แแแ แแแแฃแแ แแ แซแแแแแ แแแแแฌแงแแแฃแแแ, แจแแแแซแแแแ แจแแแกแ แฃแแแ แแ แซแแแแแ
make help
แแ แแแแฆแแ แแแฎแแแ แแแ แฎแแแแแกแแฌแแแแแ แแ แซแแแแแแแแก แจแแกแแฎแแ. - แแฅแแแ แแ แแญแแ แแแแแ แแ แแฃแแแแขแแแแก แแ แซแแแ แกแแแแแก แแแแแฎแกแแแ แแแ แแกแแแ แแแฅแแแแแแแแแก แจแแกแแกแ แฃแแแแแแ, แ แแแแ แแชแแ แแฃแ แแแแแก แฃแแฎแแแกแ แฉแแแแฌแแ แแแแก แแแฆแแแ แแ แกแแกแขแแแแจแ แจแแกแแแ. แแแแแแแแแ, แแ แซแแแแแ, แ แแแแ แแชแแ
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
แแแ แแแแฅแแแแแ, แแแแแแฅแชแแแmake db-shell
. - แคแแแแ
Makefile
แแฅแแแ แจแแแแซแแแแ แแแฅแแแแแ แแแแ แแแ แแแก, แ แแแแ แช แแ แแแฅแขแ แแแ แแแแ. แแแแแแแแแ, แแแ แขแแแแ แแ แซแแแแแแก แแแแแขแแแ แแแแแชแแแแ แแแแแก แกแแ แแแแ แแ แแกแแแก แจแแกแแฅแแแแแแ แแ แ แแแแ แกแฎแแ แแแฅแแแแแแแก แจแแกแแกแ แฃแแแแแแ. - แแฃ แแแแแแแแแ แแแแก แแแแ แแฃแแแ แแงแแแแแก แแแแแแก
Makefile
, แแก แแฃแแฏแแแแกแแแก แแแแแแจแ แแแแแแแก แแ แแแชแแ แแแก แจแแชแแแแแแก.
PS แฉแแแแก
แซแแแ แคแแกแ แแแแแฎแแแแก! แ แแแแ แแแขแแแแขแแแแ แแแ Docker Compose-แก?
แฌแงแแ แ: www.habr.com