Skip to content

Commit 354b684

Browse files
committed
feat: Automate backend running
1 parent f9d7efc commit 354b684

3 files changed

Lines changed: 51 additions & 39 deletions

File tree

.env.example

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
POSTGRES_USER=admin
2+
POSTGRES_PASSWORD=secure_password
3+
POSTGRES_NAME=myapp
4+
POSTGRES_HOST=postgres
5+
POSTGRES_PORT=5432
6+
JWT_SECRET=some_secret_hushhhh_don_t_tell_anyone_never_bro_please
7+
KAFKA_PORT=29092

backend/Dockerfile

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
# use the official Bun image
2-
# see all versions at https://hub.docker.com/r/oven/bun/tags
31
FROM oven/bun:1 as base
42

53
LABEL description="Offical docker image for Pylon services (Bun)"
@@ -13,12 +11,13 @@ WORKDIR /usr/src/pylon
1311
# this will cache them and speed up future builds
1412
FROM base AS install
1513
RUN mkdir -p /temp/dev
16-
COPY package.json bun.lockb /temp/dev/
14+
15+
COPY package.json bun.lock /temp/dev/
1716
RUN cd /temp/dev && bun install --frozen-lockfile
1817

1918
# install with --production (exclude devDependencies)
2019
RUN mkdir -p /temp/prod
21-
COPY package.json bun.lockb /temp/prod/
20+
COPY package.json bun.lock /temp/prod/
2221
RUN cd /temp/prod && bun install --frozen-lockfile --production
2322

2423
# copy node_modules from temp directory
@@ -40,8 +39,10 @@ FROM base AS release
4039
COPY --from=install /temp/prod/node_modules node_modules
4140
COPY --from=prerelease /usr/src/pylon/.pylon .pylon
4241
COPY --from=prerelease /usr/src/pylon/package.json .
42+
COPY --from=prerelease /usr/src/pylon/src src
43+
COPY --from=prerelease /usr/src/pylon/tsconfig.json tsconfig.json
4344

4445
# run the app
4546
USER bun
4647
EXPOSE 3000/tcp
47-
ENTRYPOINT [ "bun", "run", "/usr/src/pylon/.pylon/index.js" ]
48+
CMD [ "bun", "run", "/usr/src/pylon/.pylon/index.js" ]

docker-compose.yml

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,43 @@
11
services:
2+
server:
3+
build: ./backend
4+
environment:
5+
- POSTGRES_USER
6+
- POSTGRES_PASSWORD
7+
- POSTGRES_NAME
8+
- POSTGRES_HOST
9+
- POSTGRES_PORT
10+
- JWT_SECRET
11+
- KAFKA_URL=kafka:9092
12+
ports:
13+
- "3000:3000"
14+
depends_on:
15+
- postgres
16+
networks:
17+
- mynet
18+
outbox:
19+
build: ./backend
20+
environment:
21+
- POSTGRES_USER
22+
- POSTGRES_PASSWORD
23+
- POSTGRES_NAME
24+
- POSTGRES_HOST
25+
- POSTGRES_PORT
26+
- JWT_SECRET
27+
- KAFKA_URL=kafka:9092
28+
command: sh -c "sleep 5 && bun run outbox"
29+
depends_on:
30+
- postgres
31+
- kafka
32+
networks:
33+
- mynet
234
postgres:
335
image: postgres:16
436
container_name: postgres_db
537
environment:
6-
POSTGRES_USER: admin
7-
POSTGRES_PASSWORD: secure_password
8-
POSTGRES_DB: myapp
38+
- POSTGRES_USER
39+
- POSTGRES_PASSWORD
40+
- POSTGRES_DB=${POSTGRES_NAME}
941
ports:
1042
- "5432:5432"
1143
volumes:
@@ -39,12 +71,12 @@ services:
3971
depends_on:
4072
- zookeeper
4173
ports:
42-
- "29092:29092"
74+
- "${KAFKA_PORT}:${KAFKA_PORT}"
4375
environment:
4476
KAFKA_BROKER_ID: 1
4577
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
46-
KAFKA_LISTENERS: INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:29092
47-
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL://localhost:29092
78+
KAFKA_LISTENERS: INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:${KAFKA_PORT}
79+
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL://localhost:${KAFKA_PORT}
4880
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
4981
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
5082
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
@@ -55,34 +87,6 @@ services:
5587
networks:
5688
- mynet
5789

58-
# connect:
59-
# image: quay.io/debezium/connect:3.3.0.Final
60-
# container_name: connect
61-
# ports:
62-
# - "8083:8083"
63-
# environment:
64-
# - BOOTSTRAP_SERVERS=kafka:9092
65-
# - GROUP_ID=1
66-
# - CONFIG_STORAGE_TOPIC=my_connect_configs
67-
# - OFFSET_STORAGE_TOPIC=my_connect_offsets
68-
# - STATUS_STORAGE_TOPIC=my_connect_statuses
69-
# - CONNECT_REST_ADVERTISED_HOST_NAME=connect
70-
# - CONNECT_PLUGIN_PATH=/kafka/connect,/debezium-plugins
71-
# - CONNECT_KEY_CONVERTER=org.apache.kafka.connect.json.JsonConverter
72-
# - CONNECT_VALUE_CONVERTER=org.apache.kafka.connect.json.JsonConverter
73-
# - CONNECT_KEY_CONVERTER_SCHEMAS_ENABLE=false
74-
# - CONNECT_VALUE_CONVERTER_SCHEMAS_ENABLE=false
75-
# - CONNECT_LOG4J_ROOT_LOGLEVEL=INFO
76-
# volumes:
77-
# - ./connectors:/connectors
78-
# depends_on:
79-
# - kafka
80-
# - zookeeper
81-
# - postgres
82-
# networks:
83-
# - mynet
84-
# restart: unless-stopped
85-
8690
kafdrop:
8791
image: obsidiandynamics/kafdrop:latest
8892
depends_on:

0 commit comments

Comments
 (0)