Skip to content

Commit 4e5131b

Browse files
authored
PMM-10900: custom image and option to run pmm with external clickhouse (#1314)
1 parent 815adfa commit 4e5131b

File tree

5 files changed

+108
-6
lines changed

5 files changed

+108
-6
lines changed

.env.example

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Percona PMM dev container
2+
#PMM_CONTAINER=perconalab/pmm-server:dev-container
3+
4+
# Native ARM image
5+
#PMM_CONTAINER=ritbl/pmm-x:v2.31.0
6+
7+
CH_IMAGE=clickhouse/clickhouse-server:22.6.9.11-alpine
8+
CH_PORT=9000
9+
CH_HOSTNAME=ch

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,5 @@ pmm-agent-dev.yaml
2727

2828
# ViM temporary files
2929
*.sw[o,p]
30+
31+
.env

Makefile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,40 @@
22

33
include Makefile.include
44

5+
ifeq ($(PROFILES),)
6+
PROFILES := 'pmm'
7+
endif
8+
59
env-up: ## Start devcontainer.
10+
COMPOSE_PROFILES=$(PROFILES) \
611
docker-compose up -d
712

813
env-up-rebuild: env-update-image ## Rebuild and start devcontainer. Useful for custom $PMM_SERVER_IMAGE
14+
COMPOSE_PROFILES=$(PROFILES) \
915
docker-compose up --build -d
1016

1117
env-update-image: ## Pull latest dev image
18+
COMPOSE_PROFILES=$(PROFILES) \
1219
docker-compose pull
1320

1421
env-compose-up: env-update-image
22+
COMPOSE_PROFILES=$(PROFILES) \
1523
docker-compose up --detach --renew-anon-volumes --remove-orphans
1624

1725
env-devcontainer:
26+
COMPOSE_PROFILES=$(PROFILES) \
1827
docker exec -it --workdir=/root/go/src/github.com/percona/pmm pmm-managed-server .devcontainer/setup.py
1928

2029
env-down: ## Stop devcontainer.
30+
COMPOSE_PROFILES=$(PROFILES) \
2131
docker-compose down --remove-orphans
2232

2333
env-remove:
34+
COMPOSE_PROFILES=$(PROFILES) \
2435
docker-compose down --volumes --remove-orphans
2536

2637
TARGET ?= _bash
2738

2839
env: ## Run `make TARGET` in devcontainer (`make env TARGET=help`); TARGET defaults to bash.
40+
COMPOSE_PROFILES=$(PROFILES) \
2941
docker exec -it --workdir=/root/go/src/github.com/percona/pmm pmm-managed-server make $(TARGET)

docker-compose.yml

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
version: '3.7'
33
services:
44
pmm-managed-server:
5-
image: perconalab/pmm-server:dev-container
5+
profiles:
6+
- pmm
7+
image: ${PMM_CONTAINER:-perconalab/pmm-server:dev-container}
68
# build:
79
# context: .
810
# args:
@@ -19,15 +21,86 @@ services:
1921
- AWS_ACCESS_KEY=${AWS_ACCESS_KEY}
2022
- AWS_SECRET_KEY=${AWS_SECRET_KEY}
2123
- ENABLE_BACKUP_MANAGEMENT=1
24+
# - PERCONA_TEST_PLATFORM_ADDRESS=https://check.localhost
25+
# - PERCONA_TEST_PLATFORM_INSECURE=1
26+
# - PERCONA_TEST_PLATFORM_PUBLIC_KEY=<public key>
27+
# - PERCONA_TEST_TELEMETRY_INTERVAL=10s
28+
# - PERCONA_TEST_TELEMETRY_RETRY_BACKOFF=10s
29+
# - PERCONA_TEST_PMM_CLICKHOUSE_ADDR=127.0.0.1:9000
30+
# - PERCONA_TEST_PMM_CLICKHOUSE_DATABASE=pmm
31+
# - PERCONA_TEST_PMM_CLICKHOUSE_BLOCK_SIZE=10000
32+
# - PERCONA_TEST_PMM_CLICKHOUSE_POOL_SIZE=2
33+
# - PMM_DEBUG=1
34+
35+
extra_hosts:
36+
- host.docker.internal:host-gateway
37+
# - portal.localhost:${PORTAL_HOST:-host-gateway}
38+
# - check.localhost:${PORTAL_CHECK_HOST:-host-gateway}
39+
# - pmm.localhost:${PORTAL_PMM_HOST:-host-gateway}
40+
# - check-dev.percona.com:${PORTAL_PMM_HOST:-host-gateway}
41+
42+
# for delve
43+
cap_add:
44+
- SYS_PTRACE
45+
security_opt:
46+
- seccomp:unconfined
47+
48+
# see https://github.com/golang/go/wiki/LinuxKernelSignalVectorBug#what-to-do
49+
ulimits:
50+
memlock: 67108864
51+
52+
ports:
53+
- ${PMM_PORT_HTTP:-80}:80
54+
- ${PMM_PORT_HTTPS:-443}:443
55+
# For headless delve
56+
- ${PMM_PORT_DELVE:-2345}:2345
57+
# PG
58+
- ${PMM_PORT_PG:-15432}:5432
59+
# CH
60+
- ${PMM_PORT_CH_TCP:-11000}:9000
61+
- ${PMM_PORT_CH_HTTP:-11123}:8123
62+
volumes:
63+
- ./:/root/go/src/github.com/percona/pmm
64+
- ./Makefile.devcontainer:/root/go/src/github.com/percona/pmm/Makefile:ro # change Makefile in devcontainer
65+
# caching
66+
- go-modules:/root/go/pkg/mod
67+
- root-cache:/root/.cache
68+
69+
# PMM with external ClickHouse DB
70+
ch:
71+
profiles:
72+
- pmm-ch
73+
image: ${CH_IMAGE:-clickhouse/clickhouse-server:22.6.9.11-alpine}
74+
platform: linux/amd64
75+
hostname: ${CH_HOSTNAME:-ch}
76+
ports:
77+
- ${CH_PORT:-9000}:9000
78+
pmm-managed-server-ch:
79+
profiles:
80+
- pmm-ch
81+
depends_on:
82+
- ch
83+
image: ${PMM_CONTAINER:-perconalab/pmm-server:dev-container}
84+
container_name: pmm-managed-server
85+
hostname: pmm-managed-server
86+
networks:
87+
- ${NETWORK:-default}
88+
environment:
89+
- PMM_RELEASE_PATH=/root/go/bin
90+
- REVIEWDOG_GITHUB_API_TOKEN=${REVIEWDOG_GITHUB_API_TOKEN}
91+
- ENABLE_DBAAS=${ENABLE_DBAAS:-0}
92+
- AWS_ACCESS_KEY=${AWS_ACCESS_KEY}
93+
- AWS_SECRET_KEY=${AWS_SECRET_KEY}
94+
- ENABLE_BACKUP_MANAGEMENT=1
2295
# - PERCONA_TEST_PLATFORM_ADDRESS=https://check.localhost
2396
# - PERCONA_TEST_PLATFORM_INSECURE=1
2497
# - PERCONA_TEST_PLATFORM_PUBLIC_KEY=<public key>
2598
# - PERCONA_TEST_TELEMETRY_INTERVAL=10s
2699
# - PERCONA_TEST_TELEMETRY_RETRY_BACKOFF=10s
27-
# - PERCONA_TEST_PMM_CLICKHOUSE_ADDR=127.0.0.1:9000
28-
# - PERCONA_TEST_PMM_CLICKHOUSE_DATABASE=pmm
29-
# - PERCONA_TEST_PMM_CLICKHOUSE_BLOCK_SIZE=10000
30-
# - PERCONA_TEST_PMM_CLICKHOUSE_POOL_SIZE=2
100+
- PERCONA_TEST_PMM_CLICKHOUSE_ADDR=${CH_HOSTNAME:-ch}:9000
101+
- PERCONA_TEST_PMM_CLICKHOUSE_DATABASE=pmm
102+
- PERCONA_TEST_PMM_CLICKHOUSE_BLOCK_SIZE=10000
103+
- PERCONA_TEST_PMM_CLICKHOUSE_POOL_SIZE=2
31104
# - PMM_DEBUG=1
32105

33106
extra_hosts:
@@ -59,6 +132,7 @@ services:
59132
- ${PMM_PORT_CH_HTTP:-11123}:8123
60133
volumes:
61134
- ./:/root/go/src/github.com/percona/pmm
135+
# - "../grafana/public:/usr/share/grafana/public"
62136
- ./Makefile.devcontainer:/root/go/src/github.com/percona/pmm/Makefile:ro # change Makefile in devcontainer
63137
# caching
64138
- go-modules:/root/go/pkg/mod

managed/Makefile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,13 @@ release: ## Build pmm-managed release binaries.
3636
env CGO_ENABLED=0 go build -v $(PMM_LD_FLAGS) -o $(PMM_RELEASE_PATH)/ ./cmd/...
3737
$(PMM_RELEASE_PATH)/pmm-managed --version
3838

39+
ARCH=$(shell uname -m)
3940
release-dev:
40-
go build -race -gcflags="all=-N -l" -v $(PMM_LD_FLAGS) -o $(PMM_RELEASE_PATH)/ ./cmd/...
41+
@if [ $(ARCH) = "aarch64" ]; then\
42+
go build -gcflags="all=-N -l" -v $(PMM_LD_FLAGS) -o $(PMM_RELEASE_PATH)/ ./cmd/...
43+
else \
44+
go build -race -gcflags="all=-N -l" -v $(PMM_LD_FLAGS) -o $(PMM_RELEASE_PATH)/ ./cmd/...
45+
fi
4146

4247
PMM_TEST_FLAGS ?= -timeout=90s
4348
PMM_TEST_RUN_UPDATE ?= 0

0 commit comments

Comments
 (0)