Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 5dd394c

Browse files
kvapkelvich
authored andcommitted
Add docker-compose config for tap-tests.
1 parent d84543d commit 5dd394c

File tree

3 files changed

+136
-0
lines changed

3 files changed

+136
-0
lines changed

docker/Dockerfile

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# vim:set ft=dockerfile:
2+
FROM debian:jessie
3+
4+
# explicitly set user/group IDs
5+
RUN groupadd -r postgres --gid=999 && useradd -r -g postgres --uid=999 postgres
6+
7+
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
8+
9+
RUN apt-get update && apt-get install -y \
10+
make \
11+
gcc \
12+
libreadline-dev \
13+
bison \
14+
flex \
15+
zlib1g-dev \
16+
&& rm -rf /var/lib/apt/lists/*
17+
18+
RUN mkdir /pg
19+
RUN chown postgres:postgres /pg
20+
21+
USER postgres
22+
23+
WORKDIR /pg
24+
ENV CFLAGS -O0
25+
RUN git clone -b master https://github.com/postgrespro/postgres_cluster.git --depth 1
26+
27+
WORKDIR /pg/postgres_cluster
28+
RUN ./configure --enable-cassert --enable-debug --prefix /usr/local
29+
RUN make -j 4
30+
USER root
31+
RUN make install
32+
RUN make -C contrib/raftable install
33+
RUN make -C contrib/mmts install
34+
35+
RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql
36+
37+
ENV PATH /usr/local/bin:$PATH
38+
ENV PGDATA /var/run/postgresql/data
39+
40+
COPY docker-entrypoint.sh /
41+
42+
USER postgres
43+
ENTRYPOINT ["/docker-entrypoint.sh"]
44+
45+
EXPOSE 5432
46+
EXPOSE 5431
47+
CMD ["postgres"]

docker/docker-compose.yml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
version: '2'
2+
3+
networks:
4+
clusternet:
5+
driver: bridge
6+
ipam:
7+
driver: default
8+
config:
9+
- subnet: 10.0.0.0/24
10+
11+
services:
12+
node1:
13+
build: .
14+
networks:
15+
clusternet:
16+
ipv4_address: 10.0.0.10
17+
environment:
18+
NODEID: '1'
19+
CONNS: 'dbname=postgres host=10.0.0.10 port=5432,dbname=postgres host=10.0.0.20 port=5432,dbname=postgres host=10.0.0.30 port=5432'
20+
PEERS: '1:10.0.0.10:5431,2:10.0.0.20:5431,3:10.0.0.30:5431'
21+
ports:
22+
- "5432:5432"
23+
- "5431:5431"
24+
node2:
25+
build: .
26+
networks:
27+
clusternet:
28+
ipv4_address: 10.0.0.20
29+
environment:
30+
NODEID: '2'
31+
CONNS: 'dbname=postgres host=10.0.0.10 port=5432,dbname=postgres host=10.0.0.20 port=5432,dbname=postgres host=10.0.0.30 port=5432'
32+
PEERS: '1:10.0.0.10:5431,2:10.0.0.20:5431,3:10.0.0.30:5431'
33+
ports:
34+
- "5434:5432"
35+
- "5433:5431"
36+
node3:
37+
build: .
38+
networks:
39+
clusternet:
40+
ipv4_address: 10.0.0.30
41+
environment:
42+
NODEID: '3'
43+
CONNS: 'dbname=postgres host=10.0.0.10 port=5432,dbname=postgres host=10.0.0.20 port=5432,dbname=postgres host=10.0.0.30 port=5432'
44+
PEERS: '1:10.0.0.10:5431,2:10.0.0.20:5431,3:10.0.0.30:5431'
45+
ports:
46+
- "5436:5432"
47+
- "5435:5431"

docker/docker-entrypoint.sh

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/bin/bash
2+
set -e
3+
4+
mkdir -p "$PGDATA"
5+
chmod 700 "$PGDATA"
6+
chown -R postgres "$PGDATA"
7+
8+
chmod g+s /run/postgresql
9+
chown -R postgres /run/postgresql
10+
11+
initdb
12+
13+
cat >> "$PGDATA/pg_hba.conf" <<-EOF
14+
host all all 0.0.0.0/0 trust
15+
local replication all trust
16+
host replication all 0.0.0.0/0 trust
17+
EOF
18+
19+
cat >> "$PGDATA/postgresql.conf" <<-EOF
20+
listen_addresses = '*'
21+
unix_socket_directories = ''
22+
port = 5432
23+
max_prepared_transactions = 200
24+
max_connections = 200
25+
max_worker_processes = 100
26+
wal_level = logical
27+
fsync = off
28+
max_wal_senders = 10
29+
wal_sender_timeout = 0
30+
max_replication_slots = 10
31+
shared_preload_libraries = 'raftable,multimaster'
32+
multimaster.workers = 10
33+
multimaster.queue_size = 10485760 # 10mb
34+
multimaster.node_id = $NODEID
35+
multimaster.conn_strings = '$CONNS'
36+
multimaster.use_raftable = true
37+
multimaster.ignore_tables_without_pk = true
38+
raftable.id = $NODEID
39+
raftable.peers = '$PEERS'
40+
EOF
41+
42+
"$@"

0 commit comments

Comments
 (0)