Repository navigation
Expand file tree
/
Copy pathcompose.yaml
More file actions
72 lines (67 loc) · 2.46 KB
/
Copy pathcompose.yaml
File metadata and controls
72 lines (67 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Everything dbclone needs, with nothing installed on the host but Docker:
#
# docker compose up -d # local MongoDB + MySQL + Postgres from the official images
# docker compose run --rm dbclone # the CLI itself, talking to them over the Docker socket
#
# Ports, container names and the local root password can be overridden from the
# environment (DBCLONE_MONGO_PORT, DBCLONE_MYSQL_PORT, DBCLONE_POSTGRES_PORT,
# DBCLONE_MONGO_CONTAINER, DBCLONE_MYSQL_CONTAINER, DBCLONE_POSTGRES_CONTAINER,
# DBCLONE_LOCAL_PASSWORD). The password only guards databases
# on your own machine; dbclone reads it from the containers and never asks for it.
services:
mongodb:
image: mongo:7
container_name: ${DBCLONE_MONGO_CONTAINER:-mongodb}
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: ${DBCLONE_LOCAL_PASSWORD:-dbclone}
ports:
- "${DBCLONE_MONGO_PORT:-27017}:27017"
volumes:
- mongodb-data:/data/db
restart: unless-stopped
mysql:
image: mysql:8.4
container_name: ${DBCLONE_MYSQL_CONTAINER:-mysql}
environment:
MYSQL_ROOT_PASSWORD: ${DBCLONE_LOCAL_PASSWORD:-dbclone}
ports:
- "${DBCLONE_MYSQL_PORT:-3306}:3306"
volumes:
- mysql-data:/var/lib/mysql
restart: unless-stopped
postgres:
image: postgres:17
container_name: ${DBCLONE_POSTGRES_CONTAINER:-postgres}
environment:
POSTGRES_PASSWORD: ${DBCLONE_LOCAL_PASSWORD:-dbclone}
ports:
- "${DBCLONE_POSTGRES_PORT:-5432}:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
restart: unless-stopped
# Not started by `up`; run it on demand: docker compose run --rm dbclone [flags]
dbclone:
build: .
image: dbclone:local
profiles: [cli]
environment:
DBCLONE_MONGO_CONTAINER: ${DBCLONE_MONGO_CONTAINER:-mongodb}
DBCLONE_MYSQL_CONTAINER: ${DBCLONE_MYSQL_CONTAINER:-mysql}
DBCLONE_POSTGRES_CONTAINER: ${DBCLONE_POSTGRES_CONTAINER:-postgres}
volumes:
- /var/run/docker.sock:/var/run/docker.sock # dbclone runs `docker exec` into the three containers above
- dbclone-config:/root/.config/dbclone # profiles.json (mode 0600) survives between runs
- ./logs:/work/logs # per-run tool output lands next to this file
working_dir: /work
stdin_open: true
tty: true
depends_on:
- mongodb
- mysql
- postgres
volumes:
mongodb-data:
mysql-data:
postgres-data:
dbclone-config: