build: setup docker compose
This commit is contained in:
parent
7714fa4139
commit
68f9cb5509
|
@ -0,0 +1,7 @@
|
|||
ENV=development
|
||||
PORT=5000
|
||||
|
||||
DATABASE_URL=postgres://postgres:password@localhost:5432/jokesbapak2
|
||||
REDIS_URL=redis://@localhost:6379
|
||||
|
||||
SENTRY_DSN=
|
|
@ -18,4 +18,6 @@ vendor/
|
|||
.env
|
||||
|
||||
# Heroku bin directory
|
||||
bin
|
||||
bin
|
||||
|
||||
main
|
|
@ -7,4 +7,6 @@ COPY . .
|
|||
RUN go mod download
|
||||
RUN go build -v main.go
|
||||
|
||||
EXPOSE ${PORT}
|
||||
|
||||
CMD ["./main"]
|
|
@ -8,4 +8,6 @@ RUN npm install -g yarn
|
|||
RUN yarn install
|
||||
RUN yarn build
|
||||
|
||||
EXPOSE ${PORT}
|
||||
|
||||
CMD ["yarn", "preview"]
|
|
@ -0,0 +1,5 @@
|
|||
data
|
||||
.crt
|
||||
.key
|
||||
.cnf
|
||||
.dh
|
|
@ -0,0 +1,13 @@
|
|||
FROM postgres:13.3-alpine
|
||||
|
||||
WORKDIR /var/lib/postgresql
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN apk add openssl
|
||||
|
||||
RUN chmod +x self-signed-ssl
|
||||
RUN ./self-signed-ssl
|
||||
|
||||
RUN chown postgres /var/lib/postgresql/server.key && \
|
||||
chmod 600 /var/lib/postgresql/server.key
|
|
@ -0,0 +1,58 @@
|
|||
#!/bin/bash
|
||||
|
||||
# COPIED/MODIFIED from the postgres server gen-certs util
|
||||
|
||||
# Generate some test certificates which are used by the regression test suite:
|
||||
#
|
||||
# tls/ca.{crt,key} Self signed CA certificate.
|
||||
# tls/postgres.{crt,key} A certificate with no key usage/policy restrictions.
|
||||
# tls/client.{crt,key} A certificate restricted for SSL client usage.
|
||||
# tls/server.{crt,key} A certificate restricted for SSL server usage.
|
||||
# tls/postgres.dh DH Params file.
|
||||
|
||||
generate_cert() {
|
||||
local name=$1
|
||||
local cn="$2"
|
||||
local opts="$3"
|
||||
|
||||
local keyfile=${name}.key
|
||||
local certfile=${name}.crt
|
||||
|
||||
[ -f $keyfile ] || openssl genrsa -out $keyfile 2048
|
||||
openssl req \
|
||||
-new -sha256 \
|
||||
-subj "/O=postgres Test/CN=$cn" \
|
||||
-key $keyfile | \
|
||||
openssl x509 \
|
||||
-req -sha256 \
|
||||
-CA ca.crt \
|
||||
-CAkey ca.key \
|
||||
-CAserial ca.txt \
|
||||
-CAcreateserial \
|
||||
-days 365 \
|
||||
$opts \
|
||||
-out $certfile
|
||||
}
|
||||
|
||||
[ -f ca.key ] || openssl genrsa -out ca.key 4096
|
||||
openssl req \
|
||||
-x509 -new -nodes -sha256 \
|
||||
-key ca.key \
|
||||
-days 3650 \
|
||||
-subj '/O=postgres Test/CN=Certificate Authority' \
|
||||
-out ca.crt
|
||||
|
||||
cat > openssl.cnf <<_END_
|
||||
[ server_cert ]
|
||||
keyUsage = digitalSignature, keyEncipherment
|
||||
nsCertType = server
|
||||
[ client_cert ]
|
||||
keyUsage = digitalSignature, keyEncipherment
|
||||
nsCertType = client
|
||||
_END_
|
||||
|
||||
generate_cert server "Server-only" "-extfile openssl.cnf -extensions server_cert"
|
||||
generate_cert client "Client-only" "-extfile openssl.cnf -extensions client_cert"
|
||||
generate_cert postgres "Generic-cert"
|
||||
|
||||
[ -f postgres.dh ] || openssl dhparam -out postgres.dh 2048
|
|
@ -0,0 +1,2 @@
|
|||
data
|
||||
etc
|
|
@ -0,0 +1,76 @@
|
|||
services:
|
||||
api:
|
||||
build: ./api/
|
||||
restart: always
|
||||
env_file: ./api/.env
|
||||
ports:
|
||||
- 5000:5000
|
||||
depends_on:
|
||||
- db
|
||||
- cache
|
||||
# Uncomment these if you want to have it on
|
||||
# volumes:
|
||||
# ./api:/app
|
||||
|
||||
client:
|
||||
build: ./client/
|
||||
restart: always
|
||||
env_file: ./client/.env
|
||||
ports:
|
||||
- 3000:3000
|
||||
depends_on:
|
||||
- api
|
||||
# Uncomment these if you want to have it on
|
||||
# volumes:
|
||||
# ./client:/app
|
||||
|
||||
db:
|
||||
build: ./database/postgres/
|
||||
command: >
|
||||
-c ssl=on
|
||||
-c ssl_cert_file=/var/lib/postgresql/server.crt
|
||||
-c ssl_key_file=/var/lib/postgresql/server.key
|
||||
restart: always
|
||||
ports:
|
||||
- 5432:5432
|
||||
environment:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: password
|
||||
POSTGRES_DB: jokesbapak2
|
||||
PGDATA: /data/postgres
|
||||
# I got this key from somewhere. It works when you run it locally.
|
||||
POSTGRES_SSL_CA_CERT: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURjekNDQWx1Z0F3SUJBZ0lVR3lDaElvR3g0
|
||||
volumes:
|
||||
- ./database/postgres/data:/data/postgres
|
||||
|
||||
cache:
|
||||
image: redis:6.2.4-alpine
|
||||
restart: always
|
||||
ports:
|
||||
- 6379:6379
|
||||
volumes:
|
||||
- ./database/redis/etc:/usr/local/etc/redis
|
||||
- ./database/redis/data:/data
|
||||
|
||||
cache-admin:
|
||||
image: rediscommander/redis-commander:latest
|
||||
restart: always
|
||||
environment:
|
||||
REDIS_PORT: 6379
|
||||
REDIS_HOST: redis
|
||||
ports:
|
||||
- 2084:8081
|
||||
depends_on:
|
||||
- cache
|
||||
|
||||
db-admin:
|
||||
image: sosedoff/pgweb:0.11.8
|
||||
restart: always
|
||||
ports:
|
||||
- 2086:8081
|
||||
links:
|
||||
- postgres:postgres
|
||||
environment:
|
||||
DATABASE_URL: postgres://postgres:password@db/jokesbapak2
|
||||
depends_on:
|
||||
- db
|
Loading…
Reference in New Issue