Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles

ืžื“ื™ ื›ืžื” ืฉื ื™ื, ืชืขืฉื™ื™ืช ืคื™ืชื•ื— ื”ืชื•ื›ื ื” ืขื•ื‘ืจืช ืฉื™ื ื•ื™ ืคืจื“ื™ื’ืžื”. ื ื™ืชืŸ ืœื–ื”ื•ืช ืืช ืื—ืช ื”ืชื•ืคืขื•ืช ื”ืœืœื• ื›ืขื ื™ื™ืŸ ื”ื’ื•ื‘ืจ ื‘ืžื•ืฉื’ ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื. ืœืžืจื•ืช ืฉืฉื™ืจื•ืชื™ ืžื™ืงืจื• ื”ื ืœื ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื—ื“ืฉื” ื‘ื™ื•ืชืจ, ืจืง ืœืื—ืจื•ื ื” ื”ืคื•ืคื•ืœืจื™ื•ืช ืฉืœื” ืžืžืฉ ื–ื™ื ืงื” ืฉื—ืงื™ื.

ืฉื™ืจื•ืชื™ื ืžื•ื ื•ืœื™ื˜ื™ื™ื ื’ื“ื•ืœื™ื ืžื•ื—ืœืคื™ื ื›ืขืช ื‘ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืขืฆืžืื™ื™ื ื•ืื•ื˜ื•ื ื•ืžื™ื™ื. ื ื™ืชืŸ ืœื”ืชื™ื™ื—ืก ืœืžื™ืงืจื•-ืฉื™ืจื•ืช ื›ืืคืœื™ืงืฆื™ื” ื”ืžืฉืจืชืช ืžื˜ืจื” ืื—ืช ื•ืžืื•ื“ ืกืคืฆื™ืคื™ืช. ืœื“ื•ื’ืžื”, ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช DBMS ื™ื—ืกื™, ื™ื™ืฉื•ื Express, ืฉื™ืจื•ืช Solr.

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles

ื‘ื™ืžื™ื ืืœื”, ืงืฉื” ืœื“ืžื™ื™ืŸ ืคื™ืชื•ื— ืžืขืจื›ืช ืชื•ื›ื ื” ื—ื“ืฉื” ืžื‘ืœื™ ืœื”ืฉืชืžืฉ ื‘ืฉื™ืจื•ืชื™ ืžื™ืงืจื•. ื•ื”ืžืฆื‘ ื”ื–ื”, ื‘ืชื•ืจื•, ืžื•ื‘ื™ืœ ืื•ืชื ื• ืœืคืœื˜ืคื•ืจืžืช Docker.

ืกึทื•ึธืจ

ืคืœื˜ืคื•ืจืžื” ืกึทื•ึธืจ, ื‘ืคื™ืชื•ื— ื•ืคืจื™ืกื” ืฉืœ ืฉื™ืจื•ืชื™ ืžื™ืงืจื•, ื”ืคืš ื›ืžืขื˜ ืœืกื˜ื ื“ืจื˜ ื‘ืชืขืฉื™ื™ื”. ื‘ืืชืจ ื”ืคืจื•ื™ืงื˜ ื ื™ืชืŸ ืœื’ืœื•ืช ื›ื™ Docker ื”ื™ื ืคืœื˜ืคื•ืจืžืช ื”ืงื•ื ื˜ื™ื™ื ืจื™ื–ืฆื™ื” ื”ืขืฆืžืื™ืช ื”ื™ื—ื™ื“ื” ื”ืžืืคืฉืจืช ืœืืจื’ื•ื ื™ื ืœื™ืฆื•ืจ ืœืœื ืžืืžืฅ ื›ืœ ืืคืœื™ืงืฆื™ื”, ื›ืžื• ื’ื ืœื”ืคื™ืฅ ื•ืœื”ืคืขื™ืœ ืื•ืชื ื‘ื›ืœ ืกื‘ื™ื‘ื” - ืžืขื ื ื™ื ื”ื™ื‘ืจื™ื“ื™ื™ื ื•ืขื“ ืœืžืขืจื›ื•ืช ืงืฆื”.

ื“ื•ืงืจ ืœื”ืœื—ื™ืŸ

ะขะตั…ะฝะพะปะพะณะธั ื“ื•ืงืจ ืœื”ืœื—ื™ืŸ ืžื™ื•ืขื“ ืœื”ื’ื“ืจืช ืืคืœื™ืงืฆื™ื•ืช ืžืจื•ื‘ื•ืช ืžื›ื•ืœื•ืช. ืคืจื•ื™ืงื˜ Docker Compose ื™ื›ื•ืœ ืœื”ื›ื™ืœ ื›ืžื” ืžื›ืœื™ Docker ื›ืคื™ ืฉื™ื•ืฆืจ ื”ืคืจื•ื™ืงื˜ ืฆืจื™ืš.

ื‘ืขื‘ื•ื“ื” ืขื Docker Compose, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืงื•ื‘ืฅ YAML ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ืฉื™ืจื•ืชื™ ื”ื™ื™ืฉื•ืžื™ื ื•ืœืืจื’ืŸ ืืช ื”ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ื ื™ื”ื. Docker Compose ื”ื•ื ืืคื•ื ื›ืœื™ ืœืชื™ืื•ืจ ื•ื”ืจืฆื” ืฉืœ ื™ื™ืฉื•ืžื™ Docker ืžืจื•ื‘ื™ ืžื›ื•ืœื•ืช.

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles
ืฉื ื™ ืžื›ื•ืœื•ืช ื”ืคื•ืขืœื•ืช ืขืœ ืžืขืจื›ืช ืžืืจื—

GNU Make

ืชื›ื ื™ืช make, ื”ื•ื ื‘ืขืฆื ื›ืœื™ ืœืื•ื˜ื•ืžืฆื™ื” ืฉืœ ื‘ื ื™ื™ืช ืชื•ื›ื ื™ื•ืช ื•ืกืคืจื™ื•ืช ืžืงื•ื“ ืžืงื•ืจ. ื‘ืื•ืคืŸ ื›ืœืœื™, ืื ื• ื™ื›ื•ืœื™ื ืœื•ืžืจ ื–ืืช make ื—ืœ ืขืœ ื›ืœ ืชื”ืœื™ืš ื”ื›ืจื•ืš ื‘ื‘ื™ืฆื•ืข ืคืงื•ื“ื•ืช ืฉืจื™ืจื•ืชื™ื•ืช ื›ื“ื™ ืœื”ืคื•ืš ื—ื•ืžืจื™ ืงืœื˜ ืžืกื•ื™ืžื™ื ืœืฆื•ืจืช ืคืœื˜ ื›ืœืฉื”ื™, ืœืžื˜ืจื” ื›ืœืฉื”ื™. ื‘ืžืงืจื” ืฉืœื ื•, ื”ืคืงื•ื“ื•ืช docker-compose ื™ื”ืคื•ืš ืœืžื˜ืจื•ืช ืžื•ืคืฉื˜ื•ืช (ื™ืขื“ื™ ื˜ืœืคื•ืŸ).

ืœืกืคืจ ืœืชื•ื›ื ื™ืช make ืœื’ื‘ื™ ืžื” ืฉืื ื—ื ื• ืจื•ืฆื™ื ืžืžื ื•, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืงื•ื‘ืฅ Makefile.

ืฉืœื ื• Makefile ื™ื›ื™ืœ ืคืงื•ื“ื•ืช ืจื’ื™ืœื•ืช docker ะธ docker-compose, ืฉื ื•ืขื“ื• ืœืคืชื•ืจ ื‘ืขื™ื•ืช ืจื‘ื•ืช. ื›ืœื•ืžืจ, ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ื”ืจื›ื‘ืช ืงื•ื ื˜ื™ื™ื ืจ, ืขืœ ื”ืชื—ืœืชื•, ืขืฆื™ืจืชื•, ื”ืคืขืœื” ืžื—ื“ืฉ, ืขืœ ืืจื’ื•ืŸ ื”ืชื—ื‘ืจื•ืช ืžืฉืชืžืฉ ืœืงื•ื ื˜ื™ื™ื ืจ, ืขืœ ืขื‘ื•ื“ื” ืขื ื™ื•ืžื ื™ ืงื•ื ื˜ื™ื™ื ืจ ื•ืขืœ ืคืชืจื•ืŸ ื‘ืขื™ื•ืช ื“ื•ืžื•ืช ืื—ืจื•ืช.

ืžืงืจื™ ืฉื™ืžื•ืฉ ื˜ื™ืคื•ืกื™ื™ื ืขื‘ื•ืจ Docker Compose

ื‘ื•ืื• ื ื“ืžื™ื™ืŸ ื™ื™ืฉื•ื ืื™ื ื˜ืจื ื˜ ืจื’ื™ืœ ื”ื›ื•ืœืœ ืืช ื”ืจื›ื™ื‘ื™ื ื”ื‘ืื™ื:

  • ืžืกื“ ื ืชื•ื ื™ื TimescaleDB (Postgres).
  • ืืคืœื™ืงืฆื™ื™ืช Express.js.
  • ืคื™ื ื’ (ืกืชื ืžื™ื›ืœ, ืœื ืขื•ืฉื” ืฉื•ื ื“ื‘ืจ ืžื™ื•ื—ื“).

ื™ื™ืฉื•ื ื–ื” ื™ืฆื˜ืจืš 3 ืžื›ื•ืœื•ืช Docker ื•ืงื•ื‘ืฅ docker-compose, ื”ืžื›ื™ืœ ื”ื•ืจืื•ืช ืœื ื™ื”ื•ืœ ืžื›ื•ืœื•ืช ืืœื•. ืœื›ืœ ืžื™ื›ืœ ื™ื”ื™ื• ื ืงื•ื“ื•ืช ืžื’ืข ืฉื•ื ื•ืช. ืœืžืฉืœ, ืขื ืžื™ื›ืœ timescale ื ื™ืชืŸ ื™ื”ื™ื” ืœืขื‘ื•ื“ ื‘ืขืจืš ื‘ืื•ืชื• ืื•ืคืŸ ืฉื‘ื• ื”ื ืขื•ื‘ื“ื™ื ืขื ืžืกื“ื™ ื ืชื•ื ื™ื. ื›ืœื•ืžืจ, ื–ื” ืžืืคืฉืจ ืœืš ืœื‘ืฆืข ืืช ื”ืคืขื•ืœื•ืช ื”ื‘ืื•ืช:

  • ื”ืชื—ื‘ืจื•ืช ืœืžืขื˜ืคืช Postgres.
  • ื™ื™ื‘ื•ื โ€‹โ€‹ื•ื™ื™ืฆื•ื ืฉืœ ื˜ื‘ืœืื•ืช.
  • ื™ืฆื™ืจื” pg_dump ื˜ื‘ืœืื•ืช ืื• ืžืกื“ื™ ื ืชื•ื ื™ื.

ืžื™ื›ืœ ื™ื™ืฉื•ืžื™ Express.js, expressjs, ืขืฉื•ื™ ืœื”ื™ื•ืช ื‘ืขืœ ื”ื™ื›ื•ืœื•ืช ื”ื‘ืื•ืช:

  • ืืกืคืงืช ื ืชื•ื ื™ื ื˜ืจื™ื™ื ืžื™ื•ืžืŸ ื”ืžืขืจื›ืช.
  • ื”ื™ื›ื ืก ืœืžืขื˜ืคืช ื›ื“ื™ ืœื‘ืฆืข ืคืงื•ื“ื•ืช ืžืกื•ื™ืžื•ืช.

ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืงื•ื ื˜ื™ื™ื ืจื™ื

ืœืื—ืจ ืฉื”ื’ื“ืจื ื• ืชืงืฉื•ืจืช ื‘ื™ืŸ ืงื•ื ื˜ื™ื™ื ืจื™ื ื‘ืืžืฆืขื•ืช Docker Compose, ื”ื’ื™ืข ื”ื–ืžืŸ ืœืชืงืฉืจ ืขื ืื•ืชื ืงื•ื ื˜ื™ื™ื ืจื™ื. ื‘ืชื•ืš ืžืขืจื›ืช Docker Compose ื™ืฉ ืคืงื•ื“ื” docker-compose, ืืคืฉืจื•ืช ืชื•ืžื›ืช -f, ื”ืžืืคืฉืจ ืœื”ืขื‘ื™ืจ ืงื•ื‘ืฅ ืœืžืขืจื›ืช docker-compose.yml.

ื‘ืืžืฆืขื•ืช ื”ื™ื›ื•ืœื•ืช ืฉืœ ืืคืฉืจื•ืช ื–ื•, ื ื™ืชืŸ ืœื”ื’ื‘ื™ืœ ืืช ื”ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืžืขืจื›ืช ืจืง ืœืื•ืชื ืžื™ื›ืœื™ื ื”ืžื•ื–ื›ืจื™ื ื‘ืงื•ื‘ืฅ docker-compose.yml.

ื‘ื•ืื• ื ืกืชื›ืœ ื›ื™ืฆื“ ื ืจืื•ืช ืื™ื ื˜ืจืืงืฆื™ื•ืช ืขื ืงื•ื ื˜ื™ื™ื ืจื™ื ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืคืงื•ื“ื•ืช docker-compose. ืื ืื ื—ื ื• ืžื“ืžื™ื™ื ื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื™ื›ื ืก ืœืžืขื˜ืคืช 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.

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles
ืขื–ืจื” ืœื’ื‘ื™ ืคืงื•ื“ื•ืช ื–ืžื™ื ื•ืช

  • make build - ื”ืจื›ื‘ืช ืชืžื•ื ื” ืž Dockerfile. ื‘ื“ื•ื’ืžื” ืฉืœื ื• ื”ืฉืชืžืฉื ื• ื‘ืชืžื•ื ื•ืช ืงื™ื™ืžื•ืช timescale ะธ ping. ืื‘ืœ ื”ืชืžื•ื ื” api ืื ื—ื ื• ืจื•ืฆื™ื ืœืืกื•ืฃ ืžืงื•ืžื™ืช. ื–ื” ื‘ื“ื™ื•ืง ืžื” ืฉื™ืขืฉื” ืœืื—ืจ ื‘ื™ืฆื•ืข ื”ืคืงื•ื“ื” ื”ื–ื•.

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles
ื‘ื ื™ื™ืช ืงื•ื ื˜ื™ื™ื ืจ Docker

  • make start - ื”ืฉืงืช ื›ืœ ื”ืžื›ื•ืœื•ืช. ื›ื“ื™ ืœื”ืคืขื™ืœ ืจืง ืžื™ื›ืœ ืื—ื“, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ื›ืžื• make start c=timescale.

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles
ื”ืคืขืœืช ืžื™ื›ืœ ืœื•ื— ื”ื–ืžื ื™ื

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles
ื”ืคืขืœืช ืžื™ื›ืœ ืคื™ื ื’

  • make login-timescale - ื”ืชื—ื‘ืจ ืœืกืฉืŸ bash ืฉืœ ื”ืžื›ื•ืœื” timescale.

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles
ื”ืคืขืœืช bash ื‘ืžื™ื›ืœ ืœืคื™ ื–ืžืŸ

  • make db-shell - ื›ื ื™ืกื” ืœ psql ื‘ืžื™ื›ืœ timescale ื›ื“ื™ ืœื‘ืฆืข ืฉืื™ืœืชื•ืช SQL ื ื’ื“ ืžืกื“ ื”ื ืชื•ื ื™ื.

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles
ื”ืคืขืœืช psql ื‘ืžื™ื›ืœ timescaledb

  • make stop - ืขืฆื™ืจืช ืžื›ื•ืœื•ืช.

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles
ืขืฆื™ืจืช ืžื™ื›ืœ ื˜ื•ื•ื— ื–ืžืŸ

  • make down - ืขืฆื™ืจื” ื•ื”ื•ืฆืื” ืฉืœ ืžื›ื•ืœื•ืช. ื›ื“ื™ ืœื”ืกื™ืจ ืžื™ื›ืœ ืกืคืฆื™ืคื™, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ื–ื• ื›ื“ื™ ืœืฆื™ื™ืŸ ืืช ื”ืžื™ื›ืœ ื”ืจืฆื•ื™. ืœื“ื•ื’ืžื” - make down c=timescale ืื• make down c=api.

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles
ืขืฆื™ืจื” ื•ืžื—ื™ืงื” ืฉืœ ื›ืœ ื”ืžื›ื™ืœื™ื

ืชื•ืฆืื•ืช ืฉืœ

ืœืžืจื•ืช ืฉ-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, ื–ื” ืžื™ื™ืขืœ ืืช ืฉื™ืชื•ืฃ ื”ืคืขื•ืœื” ื•ืžืคื—ื™ืช ืฉื’ื™ืื•ืช.

ื .ื‘. ืฉืœื ื• ื–ื™ืจืช ืžืกื—ืจ ื™ืฉ ืชืžื•ื ื” ืกึทื•ึธืจ, ืฉื ื™ืชืŸ ืœื”ืชืงื™ืŸ ื‘ืงืœื™ืง ืื—ื“. ื ื™ืชืŸ ืœื‘ื“ื•ืง ืืช ืคืขื•ืœืช ื”ืžื›ื•ืœื•ืช ื‘ื›ืชื•ื‘ืช VPS. ื›ืœ ื”ืœืงื•ื—ื•ืช ื”ื—ื“ืฉื™ื ืžืงื‘ืœื™ื 3 ื™ืžื™ ื‘ื“ื™ืงื” ืœืœื ืชืฉืœื•ื.

ืงื•ืจืื™ื ื™ืงืจื™ื! ื›ื™ืฆื“ ืœื”ืคื•ืš ืืช Docker Compose ืœืื•ื˜ื•ืžื˜ื™?

Docker Compose: ืคืฉื˜ ืืช ื”ืขื‘ื•ื“ื” ืฉืœืš ื‘ืืžืฆืขื•ืช Makefiles

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”