File tree 8 files changed +90
-32
lines changed
8 files changed +90
-32
lines changed Original file line number Diff line number Diff line change 1
1
POSTGRES_USER = zygdev
2
- POSTGRES_PASSWORD = secure
2
+ POSTGRES_PASSWORD = VeryS3cure
3
3
POSTGRES_DB = zygdb
4
4
DATABASE_HOST = database:5432
5
5
DATABASE_URL = postgresql://${ POSTGRES_USER } :${ POSTGRES_PASSWORD } @${ DATABASE_HOST } /${ POSTGRES_DB }
6
6
7
- REDIS_ADDR =
8
- REDIS_PASS =
7
+ REDIS_ADDR = redis:6379
8
+ REDIS_USERNAME = zygdev
9
+ REDIS_PASSWORD = redispass
10
+ REDIS_TLS_ENABLED = 0
9
11
10
12
# Get these from Supabase console.
11
13
SUPABASE_JWT_SECRET =
12
14
13
15
# Resend for Email APIs.
14
16
RESEND_API_KEY =
15
17
16
- # Set this to 1 if you want db queries in logs.
17
- ZYG_DB_QUERY_DEBUG = 0
18
-
19
- # Main API server port
20
- ZYG_SRV_PORT = 8000
21
-
22
- # External API server port
23
- ZYG_XSRV_PORT = 8080
24
-
25
- # Set this to '0' if you don't want db queries in logs.
26
- ZYG_DB_QUERY_DEBUG = 0
27
-
28
18
# Cloudflare AccountID
29
19
CF_ACCOUNT_ID =
30
20
@@ -33,3 +23,13 @@ R2_ACCESS_KEY_ID=
33
23
34
24
# Access secret for S3 compat R2 storage
35
25
R2_ACCESS_SECRET_KEY =
26
+
27
+ # Set this to 1 if you want db queries in logs.
28
+ ZYG_DB_QUERY_DEBUG = 0
29
+
30
+ # Main API server port
31
+ ZYG_SRV_PORT = 8080
32
+
33
+ # External API server port
34
+ ZYG_XSRV_PORT = 8000
35
+
Original file line number Diff line number Diff line change @@ -24,8 +24,8 @@ go.work
24
24
# Secrets or Envs
25
25
* .env
26
26
* .env.local
27
- .env.yaml
28
27
env.sh
28
+ env.local.sh
29
29
30
30
31
31
# Python files and directories
Original file line number Diff line number Diff line change @@ -52,15 +52,21 @@ func run(ctx context.Context) error {
52
52
53
53
slog .Info ("database" , slog .Any ("db time" , tm .Format (time .RFC1123 )))
54
54
55
- rdb := redis .NewClient (& redis.Options {
55
+ // Redis options
56
+ opts := & redis.Options {
56
57
Addr : zyg .RedisAddr (),
57
58
Username : zyg .RedisUsername (),
58
59
Password : zyg .RedisPassword (),
59
- TLSConfig : & tls.Config {
60
+ DB : 0 ,
61
+ }
62
+
63
+ if zyg .RedisTLSEnabled () {
64
+ opts .TLSConfig = & tls.Config {
60
65
InsecureSkipVerify : true ,
61
- },
62
- DB : 0 ,
63
- })
66
+ }
67
+ }
68
+
69
+ rdb := redis .NewClient (opts )
64
70
65
71
defer func (rdb * redis.Client ) {
66
72
err := rdb .Close ()
Original file line number Diff line number Diff line change @@ -52,15 +52,21 @@ func run(ctx context.Context) error {
52
52
53
53
slog .Info ("database" , slog .Any ("db time" , tm .Format (time .RFC1123 )))
54
54
55
- rdb := redis .NewClient (& redis.Options {
55
+ // Redis options
56
+ opts := & redis.Options {
56
57
Addr : zyg .RedisAddr (),
57
58
Username : zyg .RedisUsername (),
58
59
Password : zyg .RedisPassword (),
59
- TLSConfig : & tls.Config {
60
+ DB : 0 ,
61
+ }
62
+
63
+ if zyg .RedisTLSEnabled () {
64
+ opts .TLSConfig = & tls.Config {
60
65
InsecureSkipVerify : true ,
61
- },
62
- DB : 0 ,
63
- })
66
+ }
67
+ }
68
+
69
+ rdb := redis .NewClient (opts )
64
70
65
71
defer func (rdb * redis.Client ) {
66
72
err := rdb .Close ()
Original file line number Diff line number Diff line change @@ -97,17 +97,25 @@ func RedisAddr() string {
97
97
}
98
98
99
99
func RedisUsername () string {
100
- value , ok := os .LookupEnv ("REDIS_USER " )
100
+ value , ok := os .LookupEnv ("REDIS_USERNAME " )
101
101
if ! ok {
102
102
return "zygdev"
103
103
}
104
104
return value
105
105
}
106
106
107
107
func RedisPassword () string {
108
- value , ok := os .LookupEnv ("REDIS_PASS " )
108
+ value , ok := os .LookupEnv ("REDIS_PASSWORD " )
109
109
if ! ok {
110
110
return ""
111
111
}
112
112
return value
113
113
}
114
+
115
+ func RedisTLSEnabled () bool {
116
+ enabled , err := strconv .ParseBool (os .Getenv ("REDIS_TLS_ENABLED" ))
117
+ if err != nil {
118
+ return false
119
+ }
120
+ return enabled
121
+ }
Original file line number Diff line number Diff line change 1
1
FROM golang:1.23 AS builder
2
2
3
- ARG ZYG_SRV_PORT=5000
3
+ ARG ZYG_SRV_PORT=8080
4
4
ARG DATABASE_URL
5
+ ARG REDIS_ADDR
6
+ ARG REDIS_PASSWORD
7
+ ARG REDIS_TLS_ENABLED=0
5
8
ARG SUPABASE_JWT_SECRET
6
9
ARG RESEND_API_KEY
10
+ ARG CF_ACCOUNT_ID
11
+ ARG R2_ACCESS_KEY_ID
12
+ ARG R2_ACCESS_SECRET_KEY
7
13
ARG ZYG_DB_QUERY_DEBUG=0
8
14
9
15
WORKDIR /usr/src/app
@@ -19,15 +25,21 @@ COPY . .
19
25
RUN CGO_ENABLED=0 GOOS=linux go build -mod=readonly -v -o server ./cmd/srv/main.go
20
26
21
27
# Build the runtime container image from scratch, copying what is needed from the previous stage.
22
- FROM alpine
28
+ FROM alpine:3.21
23
29
24
30
# Copy the binary to the production image from the builder stage.
25
31
COPY --from=builder /usr/src/app/server /usr/local/bin/server
26
32
27
33
ENV ZYG_SRV_PORT=${ZYG_SRV_PORT}
28
34
ENV DATABASE_URL=${DATABASE_URL}
35
+ ENV REDIS_ADDR=${REDIS_ADDR}
36
+ ENV REDIS_USERNAME=${REDIS_USERNAME}
37
+ ENV REDIS_TLS_ENABLED=${REDIS_TLS_ENABLED}
29
38
ENV SUPABASE_JWT_SECRET=${SUPABASE_JWT_SECRET}
30
39
ENV RESEND_API_KEY=${RESEND_API_KEY}
40
+ ENV CF_ACCOUNT_ID=${CF_ACCOUNT_ID}
41
+ ENV R2_ACCESS_KEY_ID=${R2_ACCESS_KEY_ID}
42
+ ENV R2_ACCESS_SECRET_KEY=${R2_ACCESS_SECRET_KEY}
31
43
ENV ZYG_DB_QUERY_DEBUG=${ZYG_DB_QUERY_DEBUG}
32
44
33
45
EXPOSE ${ZYG_SRV_PORT}
Original file line number Diff line number Diff line change @@ -2,8 +2,14 @@ FROM golang:1.23 AS builder
2
2
3
3
ARG ZYG_XSRV_PORT=8000
4
4
ARG DATABASE_URL
5
+ ARG REDIS_ADDR
6
+ ARG REDIS_PASSWORD
7
+ ARG REDIS_TLS_ENABLED=0
5
8
ARG SUPABASE_JWT_SECRET
6
9
ARG RESEND_API_KEY
10
+ ARG CF_ACCOUNT_ID
11
+ ARG R2_ACCESS_KEY_ID
12
+ ARG R2_ACCESS_SECRET_KEY
7
13
ARG ZYG_DB_QUERY_DEBUG=0
8
14
9
15
WORKDIR /usr/src/app
@@ -19,15 +25,21 @@ COPY . .
19
25
RUN CGO_ENABLED=0 GOOS=linux go build -mod=readonly -v -o server ./cmd/xsrv/main.go
20
26
21
27
# Build the runtime container image from scratch, copying what is needed from the previous stage.
22
- FROM alpine
28
+ FROM alpine:3.21
23
29
24
30
# Copy the binary to the production image from the builder stage.
25
31
COPY --from=builder /usr/src/app/server /usr/local/bin/server
26
32
27
- ENV ZYG_XSRV_PORT =${ZYG_XSRV_PORT }
33
+ ENV ZYG_SRV_PORT =${ZYG_SRV_PORT }
28
34
ENV DATABASE_URL=${DATABASE_URL}
35
+ ENV REDIS_ADDR=${REDIS_ADDR}
36
+ ENV REDIS_USERNAME=${REDIS_USERNAME}
37
+ ENV REDIS_TLS_ENABLED=${REDIS_TLS_ENABLED}
29
38
ENV SUPABASE_JWT_SECRET=${SUPABASE_JWT_SECRET}
30
39
ENV RESEND_API_KEY=${RESEND_API_KEY}
40
+ ENV CF_ACCOUNT_ID=${CF_ACCOUNT_ID}
41
+ ENV R2_ACCESS_KEY_ID=${R2_ACCESS_KEY_ID}
42
+ ENV R2_ACCESS_SECRET_KEY=${R2_ACCESS_SECRET_KEY}
31
43
ENV ZYG_DB_QUERY_DEBUG=${ZYG_DB_QUERY_DEBUG}
32
44
33
45
EXPOSE ${ZYG_XSRV_PORT}
Original file line number Diff line number Diff line change @@ -19,6 +19,17 @@ services:
19
19
ports :
20
20
- " 5432:5432"
21
21
22
+ redis :
23
+ container_name : redis
24
+ image : redis
25
+ restart : always
26
+ command : redis-server --requirepass ${REDIS_PASSWORD} --user ${REDIS_USERNAME} on '>${REDIS_PASSWORD}' '~*' allcommands
27
+ env_file : .env
28
+ networks :
29
+ - stack
30
+ ports :
31
+ - " 6379:6379"
32
+
22
33
srv :
23
34
container_name : srv
24
35
build :
@@ -33,6 +44,7 @@ services:
33
44
restart : always
34
45
depends_on :
35
46
- database
47
+ - redis
36
48
env_file : .env
37
49
networks :
38
50
- stack
@@ -53,8 +65,10 @@ services:
53
65
restart : always
54
66
depends_on :
55
67
- database
68
+ - redis
56
69
env_file : .env
57
70
networks :
58
71
- stack
59
72
ports :
60
73
- " ${ZYG_XSRV_PORT}:${ZYG_XSRV_PORT}"
74
+
You can’t perform that action at this time.
0 commit comments