Skip to content

Commit 02ae696

Browse files
committed
feat: Add docker-compose files
0 parents  commit 02ae696

File tree

9 files changed

+2427
-0
lines changed

9 files changed

+2427
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
./idea

Makefile

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
TAG = "Makefile"
2+
3+
MYSQLCLIENT = mycli
4+
DOCKER_HOST_IP := $(shell ipconfig getifaddr en0)
5+
6+
##
7+
## Compose
8+
##
9+
10+
.PHONY: compose.prepare
11+
compose.prepare:
12+
@ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Preparing docker-compose"
13+
@ echo "-----------------------------------------\n"
14+
@ echo "export DOCKER_HOST_IP=$(DOCKER_HOST_IP)"
15+
@ echo "\n-----------------------------------------"
16+
@ echo ""
17+
18+
.PHONY: compose.storage
19+
compose.storage: compose.prepare
20+
@ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Running docker-compose"
21+
@ docker stop $(docker ps -a -q) || true
22+
@ docker rm -f $(docker ps -a -q) || true
23+
@ docker volume rm $(docker volume ls -f dangling=true -q) || true
24+
@ docker compose -f docker-compose.storage.yml rm -fsv || true
25+
@ DOCKER_HOST_IP=$(DOCKER_HOST_IP) docker compose \
26+
-f docker-compose.storage.yml \
27+
up
28+
29+
.PHONY: compose.spark
30+
compose.spark: compose.prepare
31+
@ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Running docker-compose"
32+
@ docker stop $(docker ps -a -q) || true
33+
@ docker rm -f $(docker ps -a -q) || true
34+
@ docker volume rm $(docker volume ls -f dangling=true -q) || true
35+
@ docker compose -f docker-compose.spark.yml rm -fsv || true
36+
@ DOCKER_HOST_IP=$(DOCKER_HOST_IP) docker compose \
37+
-f docker-compose.spark.yml \
38+
up
39+
40+
.PHONY: compose.clean
41+
compose.clean:
42+
@ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Starting: Cleaning docker resources"
43+
@ echo "-----------------------------------------\n"
44+
@ docker stop `docker ps -a -q` || true
45+
@ docker rm -f `docker ps -a -q` || true
46+
@ docker rmi -f `docker images --quiet --filter "dangling=true"` || true
47+
@ docker volume rm `docker volume ls -f dangling=true -q` || true
48+
@ rm -rf ./docker-volumes
49+
@ docker network rm `docker network ls -q` || true
50+
@ echo ""
51+
@ rm -rf metastore_db
52+
@ echo "\n-----------------------------------------"
53+
@ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Finished: Cleaning docker resources"
54+
55+
##
56+
## Storage CLIs
57+
##
58+
59+
.PHONY: mysql
60+
mysql:
61+
@ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Connecting to mysql"
62+
@ $(MYSQLCLIENT) -u root -h localhost ad_stat -p root
63+
64+
.PHONY: redis
65+
redis:
66+
@ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Connecting to redis"
67+
@ redis-cli -a credential
68+

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Practical Data Pipeline (Code)
2+

_script/docker-mysql/conf/my.cnf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[client]
2+
default-character-set = utf8mb4
3+
4+
[mysql]
5+
default-character-set = utf8mb4
6+
7+
[mysqld]
8+
character-set-client-handshake = FALSE
9+
character-set-server = utf8mb4
10+
collation-server = utf8mb4_unicode_ci
11+
default-storage-engine=InnoDB
12+
default-time-zone = '+09:00'
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE DATABASE pipeline;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
CREATE TABLE `ListingMeta`
2+
(
3+
-- primary key
4+
`listing_id` BIGINT UNSIGNED NOT NULL PRIMARY KEY,
5+
`listing_name` VARCHAR(240) NULL,
6+
`listing_desc` TEXT NULL,
7+
`listing_summary` TEXT NULL,
8+
`listing_url` TEXT NULL,
9+
10+
-- FK columns
11+
12+
-- common
13+
`created_at` datetime DEFAULT CURRENT_TIMESTAMP NOT NULL
14+
15+
) ENGINE = InnoDB
16+
DEFAULT CHARSET = utf8mb4
17+
COLLATE = utf8mb4_unicode_ci;

datasets/csv/marketing_campaign.csv

Lines changed: 2241 additions & 0 deletions
Large diffs are not rendered by default.

docker-compose.spark.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
version: '3.6'
2+
services:
3+
spark-master:
4+
image: bde2020/spark-master:3.1.1-hadoop3.2
5+
container_name: spark-master
6+
ports:
7+
- "8080:8080"
8+
- "7077:7077"
9+
volumes:
10+
- ./_script/docker-spark/apps:/opt/spark-apps
11+
- ./_script/docker-spark/data:/opt/spark-data
12+
environment:
13+
- INIT_DAEMON_STEP=setup_spark
14+
15+
spark-worker-1:
16+
image: bde2020/spark-worker:3.1.1-hadoop3.2
17+
container_name: spark-worker-1
18+
depends_on:
19+
- spark-master
20+
ports:
21+
- "8081:8081"
22+
volumes:
23+
- ./_script/docker-spark/apps:/opt/spark-apps
24+
- ./_script/docker-spark/data:/opt/spark-data
25+
environment:
26+
- "SPARK_MASTER=spark://spark-master:7077"
27+
spark-worker-2:
28+
29+
image: bde2020/spark-worker:3.1.1-hadoop3.2
30+
container_name: spark-worker-2
31+
depends_on:
32+
- spark-master
33+
ports:
34+
- "8082:8081"
35+
volumes:
36+
- ./_script/docker-spark/apps:/opt/spark-apps
37+
- ./_script/docker-spark/data:/opt/spark-data
38+
environment:
39+
- "SPARK_MASTER=spark://spark-master:7077"
40+
41+
spark-history-server:
42+
image: bde2020/spark-history-server:3.1.1-hadoop3.2
43+
container_name: spark-history-server
44+
depends_on:
45+
- spark-master
46+
ports:
47+
- "18081:18081"
48+
volumes:
49+
- /tmp/spark-events-local:/tmp/spark-events
50+
- ./_script/docker-spark/apps:/opt/spark-apps
51+
- ./_script/docker-spark/data:/opt/spark-data
52+
storage-postgres:
53+
image: postgres:11.7-alpine
54+
container_name: storage-postgers
55+
depends_on:
56+
- spark-master
57+
ports:
58+
- "5432:5432"
59+
environment:
60+
- POSTGRES_PASSWORD=root

docker-compose.storage.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
version: '3.6'
2+
services:
3+
mysql:
4+
image: mysql:8
5+
container_name: mysql
6+
restart: always
7+
ports:
8+
- 3306:3306
9+
environment:
10+
- MYSQL_DATABASE=pipeline
11+
- MYSQL_ROOT_PASSWORD=root
12+
- LANG=C.UTF-8
13+
volumes:
14+
- ./_script/docker-mysql/conf/:/etc/mysql/conf.d
15+
- ./_script/docker-mysql/sql/:/docker-entrypoint-initdb.d
16+
command: --sql_mode=''
17+
18+
redis:
19+
image: redis:5
20+
container_name: redis
21+
restart: always
22+
command: redis-server # --requirepass credential
23+
ports:
24+
- 6379:6379
25+

0 commit comments

Comments
 (0)