Skip to content

Commit 17a91a9

Browse files
author
Innokentii Kozlov
committed
update local docker infra
1 parent d6a7448 commit 17a91a9

File tree

15 files changed

+48
-247
lines changed

15 files changed

+48
-247
lines changed

Makefile

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ build-api-docker-image:
1414

1515
.PHONY: build-migrations-docker-image
1616
build-migrations-docker-image:
17-
docker build -t ghcr.io/kesha123/nodejs-rest-api/migrations:$(MIGRATIONS_IMAGE_TAG) +
18-
-f ./data/docker/Dockerfile \
19-
./data
17+
docker build -t ghcr.io/kesha123/nodejs-rest-api/migrations:$(MIGRATIONS_IMAGE_TAG) \
18+
-f ./data/docker/Dockerfile \
19+
./data
2020

2121

2222
.PHONY: generate-tls-certificates
@@ -27,25 +27,26 @@ generate-tls-certificates:
2727
openssl req -new -text -passout pass:${PASSPHRASE} -subj /CN=${COMMON_NAME} -out ${SSL_DIR}/server.req -keyout ${SSL_DIR}/privkey.pem
2828
openssl rsa -in ${SSL_DIR}/privkey.pem -passin pass:${PASSPHRASE} -out ${SSL_DIR}/server.key
2929
openssl req -x509 -in ${SSL_DIR}/server.req -text -key ${SSL_DIR}/server.key -out ${SSL_DIR}/server.crt
30+
@cp ${SSL_DIR}/server.key ${SSL_DIR}/server.key.bak
31+
@sudo chown 999:999 ${SSL_DIR}/server.key
3032
@sudo chmod 600 ${SSL_DIR}/server.key
3133

3234

33-
.PHONY: export-tls-certificates-to-env
34-
export-tls-certificates-to-env:
35-
@echo "Exporting TLS certificates to environment variables..."
36-
@mkdir -p $(shell pwd)/infrastructure/docker
37-
@echo "SSL_CERTIFICATE=$(shell cat $(SSL_DIR)/server.crt)" >> $(shell pwd)/infrastructure/docker/.env
38-
@echo "SSL_KEY=$(shell cat $(SSL_DIR)/server.key)" >> $(shell pwd)/infrastructure/docker/.env
39-
@echo "SSL_CA=$(shell cat $(SSL_DIR)/server.crt)" >> $(shell pwd)/infrastructure/docker/.env
40-
41-
4235
.PHONY: database-start-local
4336
database-start-local:
44-
docker compose -f ./infrastructure/docker/docker-compose.database.yml up -d
45-
docker exec -t nodejs-rest-api_postgres sh -c "psql -U postgres -d postgres -f /opt/sql/insert.sql"
37+
docker compose -f $(shell pwd)/infrastructure/docker/docker-compose.database.yml up -d
38+
docker run \
39+
-ti \
40+
--rm \
41+
--env-file $(shell pwd)/infrastructure/docker/.env \
42+
--network docker_nodejs-rest-api \
43+
--volume $(shell pwd)/infrastructure/docker/ssl/privkey.pem:/migrations/ssl/privkey.pem \
44+
--volume $(shell pwd)/infrastructure/docker/ssl/server.crt:/migrations/ssl/server.crt \
45+
--volume $(shell pwd)/infrastructure/docker/ssl/server.key.bak:/migrations/ssl/server.key \
46+
ghcr.io/kesha123/nodejs-rest-api/migrations:${MIGRATIONS_IMAGE_TAG}
47+
docker exec postgres sh -c "psql -U postgres -d postgres -f /opt/sql/insert.sql"
4648

4749

4850
.PHONY: api-start-local
4951
api-start-local:
50-
docker compose -f ./infrastructure/docker/docker-compose.yml up -d
51-
docker exec -t nodejs-rest-api_postgres sh -c "psql -U postgres -d postgres -f /opt/sql/insert.sql"
52+
docker compose -f $(shell pwd)/infrastructure/docker/docker-compose.yaml up -d

api/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,5 @@ pids
5454

5555
# Diagnostic reports (https://nodejs.org/api/report.html)
5656
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
57+
58+
ssl/

api/docker/.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ docker/
22
node_modules/
33
test/
44
dist/
5+
ssl/
56
.gitignore
67
README.md
78
.eslintrc.js

api/src/datasource.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {
55
EmployeeEntity,
66
DepartmentEntity,
77
} from '@kesha123/nodejs-rest-api-datasource';
8+
import * as fs from 'fs';
9+
import { join } from 'path';
810

911
config();
1012

@@ -22,9 +24,9 @@ export const getDataSourceOptions = (): DataSourceOptions => ({
2224
entities: [EmployeeEntity, DepartmentEntity],
2325
ssl: {
2426
rejectUnauthorized: false,
25-
ca: process.env.SSL_CA,
26-
key: process.env.SSL_KEY,
27-
cert: process.env.SSL_CERTIFICATE,
27+
ca: fs.readFileSync(join(__dirname, '../ssl/server.crt')).toString(),
28+
key: fs.readFileSync(join(__dirname, '../ssl/server.key')).toString(),
29+
cert: fs.readFileSync(join(__dirname, '../ssl/server.crt')).toString(),
2830
},
2931
});
3032

data/docker/.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ docker/
22
node_modules/
33
dist/
44
test/
5+
ssl/
56
.gitignore
67
README.md
78
.eslint.config.mjs

data/src/datasource.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { DataSource, DataSourceOptions } from 'typeorm';
22
import { join } from 'path';
33
import { config } from 'dotenv';
4+
import * as fs from 'fs';
45

56
config();
67

@@ -17,9 +18,9 @@ export const getDataSourceOptions = (): DataSourceOptions => ({
1718
migrations: [join(__dirname, './migrations', '**', '*.ts')],
1819
ssl: {
1920
rejectUnauthorized: false,
20-
ca: process.env.SSL_CA,
21-
key: process.env.SSL_KEY,
22-
cert: process.env.SSL_CERTIFICATE,
21+
ca: fs.readFileSync(join(__dirname, '../ssl/server.crt')).toString(),
22+
key: fs.readFileSync(join(__dirname, '../ssl/server.key')).toString(),
23+
cert: fs.readFileSync(join(__dirname, '../ssl/server.crt')).toString(),
2324
},
2425
});
2526

infrastructure/.gitignore

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

infrastructure/docker/.env

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,3 @@ POSTGRES_DB=postgres
1010
POSTGRES_DB_NAME=postgres
1111
POSTGRES_PASSWORD=postgres
1212
POSTGRES_USER=postgres
13-
14-
SSL_CERTIFICATE=Certificate: Data: Version: 3 (0x2) Serial Number: 3c:da:2f:fd:38:d2:fe:d5:8c:8a:f6:55:1e:a1:d7:0a:c4:82:6e:97 Signature Algorithm: sha256WithRSAEncryption Issuer: CN = localhost Validity Not Before: Jun 16 18:54:39 2025 GMT Not After : Jul 16 18:54:39 2025 GMT Subject: CN = localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c9:b0:06:5c:9f:98:77:fb:bd:57:99:4e:1e:2b: 3d:a5:6d:b8:6c:9f:79:29:ca:25:e1:2a:40:cd:2a: 94:30:42:c3:a0:6c:d3:37:66:fe:b8:e0:f7:d3:c1: 68:9e:1c:e4:6f:30:7f:d7:cc:1b:b0:0a:87:39:a4: 6a:b9:89:87:e9:b2:2e:ff:b0:f3:c4:ca:68:fc:6a: 73:4e:cb:84:2f:19:f8:d6:9d:a6:d4:a8:be:ce:a7: 28:c2:c4:7e:f1:36:6b:46:6b:36:10:d9:01:e1:0d: c0:5e:ed:a0:c5:23:61:5e:7d:f0:5e:18:09:73:00: e0:76:3f:fa:32:0f:eb:78:0b:26:6a:79:ed:c4:f1: 1d:33:b3:ba:e5:56:82:69:1a:13:56:9c:f4:b7:8f: 67:85:32:1d:29:46:7e:9f:34:75:f1:de:a6:4e:11: 53:eb:cc:e3:4a:4f:ec:f1:eb:33:3c:38:af:25:0c: c5:72:d8:22:5c:2f:d9:d3:ca:f1:3c:df:f1:2d:86: c6:1e:80:a5:27:85:99:79:b9:bc:c9:71:8f:f6:be: 73:e8:a1:c5:f0:29:1b:cc:5c:e1:71:15:dc:b5:8b: 5c:f3:ec:13:1a:a5:5c:a1:ec:42:07:7f:ff:2c:27: ad:ac:5b:36:94:f0:01:9a:3d:f4:94:17:d6:2e:fe: 4b:d9 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: F5:30:8F:65:80:0F:A3:02:96:85:6B:90:14:0C:03:6D:E5:A6:3E:4E X509v3 Authority Key Identifier: F5:30:8F:65:80:0F:A3:02:96:85:6B:90:14:0C:03:6D:E5:A6:3E:4E X509v3 Basic Constraints: critical CA:TRUE Signature Algorithm: sha256WithRSAEncryption Signature Value: 05:51:f8:0f:87:19:a3:ab:ed:c5:e5:8d:0a:05:f5:e9:45:2e: ac:07:16:99:7f:01:57:f4:e7:51:f8:bc:eb:57:41:96:07:c5: 22:4c:de:45:24:c9:57:ae:66:98:6e:41:4f:fc:49:cf:26:62: ce:c4:68:b3:06:23:ed:19:a1:a7:91:09:e8:59:af:82:36:d0: e1:38:cd:59:ca:66:dc:92:55:60:f8:08:87:6e:0d:a8:45:41: 1a:1a:5a:fc:55:1e:ad:92:a5:7c:4f:8f:d6:8c:d5:6f:11:79: a9:d1:70:3c:3f:c8:67:de:7a:5c:ce:03:4d:1f:27:43:6e:e2: 3a:bb:84:7b:c3:e1:4d:e3:e4:06:74:d8:5e:59:9b:3f:9f:9a: 4d:41:93:90:3d:3a:4f:47:c1:8b:37:7c:0f:38:db:de:8a:ef: fc:41:7b:41:65:51:41:9b:9d:14:21:e9:a7:4e:64:e2:59:9f: f0:d3:b5:1a:30:a7:df:d6:10:83:93:9f:fd:98:e6:54:b8:f3: cd:c8:14:76:2e:ba:3e:2b:22:08:4d:30:65:0c:2f:a8:18:c9: 37:df:b0:16:2c:70:d4:02:9f:38:c8:0c:4a:e4:2c:17:0b:68: 23:66:d8:95:b6:93:df:b4:cc:e7:39:dc:34:c1:3e:15:fc:c7: 50:9f:ca:56 -----BEGIN CERTIFICATE----- MIIDCTCCAfGgAwIBAgIUPNov/TjS/tWMivZVHqHXCsSCbpcwDQYJKoZIhvcNAQEL BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDYxNjE4NTQzOVoXDTI1MDcx NjE4NTQzOVowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAybAGXJ+Yd/u9V5lOHis9pW24bJ95Kcol4SpAzSqUMELD oGzTN2b+uOD308FonhzkbzB/18wbsAqHOaRquYmH6bIu/7DzxMpo/GpzTsuELxn4 1p2m1Ki+zqcowsR+8TZrRms2ENkB4Q3AXu2gxSNhXn3wXhgJcwDgdj/6Mg/reAsm anntxPEdM7O65VaCaRoTVpz0t49nhTIdKUZ+nzR18d6mThFT68zjSk/s8eszPDiv JQzFctgiXC/Z08rxPN/xLYbGHoClJ4WZebm8yXGP9r5z6KHF8CkbzFzhcRXctYtc 8+wTGqVcoexCB3//LCetrFs2lPABmj30lBfWLv5L2QIDAQABo1MwUTAdBgNVHQ4E FgQU9TCPZYAPowKWhWuQFAwDbeWmPk4wHwYDVR0jBBgwFoAU9TCPZYAPowKWhWuQ FAwDbeWmPk4wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEABVH4 D4cZo6vtxeWNCgX16UUurAcWmX8BV/TnUfi861dBlgfFIkzeRSTJV65mmG5BT/xJ zyZizsRoswYj7Rmhp5EJ6FmvgjbQ4TjNWcpm3JJVYPgIh24NqEVBGhpa/FUerZKl fE+P1ozVbxF5qdFwPD/IZ956XM4DTR8nQ27iOruEe8PhTePkBnTYXlmbP5+aTUGT kD06T0fBizd8Dzjb3orv/EF7QWVRQZudFCHpp05k4lmf8NO1GjCn39YQg5Of/Zjm VLjzzcgUdi66PisiCE0wZQwvqBjJN9+wFixw1AKfOMgMSuQsFwtoI2bYlbaT37TM 5zncNME+FfzHUJ/KVg== -----END CERTIFICATE-----
15-
SSL_KEY=-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJsAZcn5h3+71X mU4eKz2lbbhsn3kpyiXhKkDNKpQwQsOgbNM3Zv644PfTwWieHORvMH/XzBuwCoc5 pGq5iYfpsi7/sPPEymj8anNOy4QvGfjWnabUqL7OpyjCxH7xNmtGazYQ2QHhDcBe 7aDFI2FeffBeGAlzAOB2P/oyD+t4CyZqee3E8R0zs7rlVoJpGhNWnPS3j2eFMh0p Rn6fNHXx3qZOEVPrzONKT+zx6zM8OK8lDMVy2CJcL9nTyvE83/EthsYegKUnhZl5 ubzJcY/2vnPoocXwKRvMXOFxFdy1i1zz7BMapVyh7EIHf/8sJ62sWzaU8AGaPfSU F9Yu/kvZAgMBAAECggEAVdNmuaaemrxRJARUdkkfWBTbTLoGNO7VdL5mygfq/KiE l/GHZkWZcrIlNALTUqln2hsQ5BNy2tR4G+LoGaE5aYzOLDewXFdoGrXv8KFxVBvg xO9cjZVrcQQ4N72naV0nhFVeMgguoQcZjCvh5NI7/ppoHZpr9vjyC9AI16HnqXKP DsninJQU58tP7LUM+h2o2GTNziAfep6P36wMVdGOYT5heXxDFwHLn5Li38kdoSeG RGvC3b02Ap8qgx5mYJIUs5QV+Yomn/RQRn2BiEC2Q6DNTbu9ganyN8wlct9jNbtx DQ8yW5Y+cJSwSP8zNiwNzh8oUPkG+uImqxoLOpNgkwKBgQD4qJm7V0QGkpVqAHqE vtXMtqvdjphA7G3pTdztyf3qX+SaKD5DXxlDbpa7EaGNyyj1RyaYX4G73T76z0qc k1aliPKhuRwTIzUWsMBPS3TxruayphQUpNSRp6n5dPDCjgVqFCo0Ef8UObYbt0PQ W1+Bd3NKUYfKgFA8q16QYz33KwKBgQDPpGkO7pXdWK1WoFgtbI6OV9Ar2LJdKC0M w7BbeDZ+LeaBz4f/06xfG6FhG3HJ4aU+31OF7qa6I+OCYYWLbnU/7t6ea+Gs0K96 nNLIPMdSjU2DfJ89y5JWJPPZJ8o5qV+w4PBuEcEsdkOW7Lr8P1KSJHTwBWWi4dT+ QM/ei3eHCwKBgADENEUZjcIfbYp4GeiS1gHdhkYWjG2WzPftH4M0Hi48wW2gNiDr CB7nFlvZQBA50hR/daT+ll3H3svTG73Dzn6QH39UHLwKXb2GKfGUn/WmvltKm8E8 iNMyGxoDvEI9QdMD4OVsMMcVLnSDahgYUAEMJzTRb4O2RYkKVi5HwAclAoGASAgi BfMQfDP6FfYUANYK8ihWaA+JeLWqQyZTtLeUN9uWfmvPIxl8T5YXOse5hq5Hk/MH V4v9vM8caquIF2GfPSmRguWr6TaP2XozyREEmIe6XyXJXDeVsVqqWSfriGtQbdzq q1Rvbgws0FuZVk5lR5tsEaPdqU6sg/NZ6Tr6oRcCgYEAzeI7lhVd0ZceYLNxaby2 gra/gnhKah63hL82xqQcyUloIbAFtRBUDMzpDaJzKDOLpOoyaSUsJfjpFjTL7Zx1 Q1PrGGnldJH3YnFPX/JKSfHp4Ohm3pLLVRlMkq8ppj2EWDxXFSafwdDA64QcEctc B5Si2dC9KHSqM6UD2Q8jg8w= -----END PRIVATE KEY-----
16-
SSL_CA=Certificate: Data: Version: 3 (0x2) Serial Number: 3c:da:2f:fd:38:d2:fe:d5:8c:8a:f6:55:1e:a1:d7:0a:c4:82:6e:97 Signature Algorithm: sha256WithRSAEncryption Issuer: CN = localhost Validity Not Before: Jun 16 18:54:39 2025 GMT Not After : Jul 16 18:54:39 2025 GMT Subject: CN = localhost Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c9:b0:06:5c:9f:98:77:fb:bd:57:99:4e:1e:2b: 3d:a5:6d:b8:6c:9f:79:29:ca:25:e1:2a:40:cd:2a: 94:30:42:c3:a0:6c:d3:37:66:fe:b8:e0:f7:d3:c1: 68:9e:1c:e4:6f:30:7f:d7:cc:1b:b0:0a:87:39:a4: 6a:b9:89:87:e9:b2:2e:ff:b0:f3:c4:ca:68:fc:6a: 73:4e:cb:84:2f:19:f8:d6:9d:a6:d4:a8:be:ce:a7: 28:c2:c4:7e:f1:36:6b:46:6b:36:10:d9:01:e1:0d: c0:5e:ed:a0:c5:23:61:5e:7d:f0:5e:18:09:73:00: e0:76:3f:fa:32:0f:eb:78:0b:26:6a:79:ed:c4:f1: 1d:33:b3:ba:e5:56:82:69:1a:13:56:9c:f4:b7:8f: 67:85:32:1d:29:46:7e:9f:34:75:f1:de:a6:4e:11: 53:eb:cc:e3:4a:4f:ec:f1:eb:33:3c:38:af:25:0c: c5:72:d8:22:5c:2f:d9:d3:ca:f1:3c:df:f1:2d:86: c6:1e:80:a5:27:85:99:79:b9:bc:c9:71:8f:f6:be: 73:e8:a1:c5:f0:29:1b:cc:5c:e1:71:15:dc:b5:8b: 5c:f3:ec:13:1a:a5:5c:a1:ec:42:07:7f:ff:2c:27: ad:ac:5b:36:94:f0:01:9a:3d:f4:94:17:d6:2e:fe: 4b:d9 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: F5:30:8F:65:80:0F:A3:02:96:85:6B:90:14:0C:03:6D:E5:A6:3E:4E X509v3 Authority Key Identifier: F5:30:8F:65:80:0F:A3:02:96:85:6B:90:14:0C:03:6D:E5:A6:3E:4E X509v3 Basic Constraints: critical CA:TRUE Signature Algorithm: sha256WithRSAEncryption Signature Value: 05:51:f8:0f:87:19:a3:ab:ed:c5:e5:8d:0a:05:f5:e9:45:2e: ac:07:16:99:7f:01:57:f4:e7:51:f8:bc:eb:57:41:96:07:c5: 22:4c:de:45:24:c9:57:ae:66:98:6e:41:4f:fc:49:cf:26:62: ce:c4:68:b3:06:23:ed:19:a1:a7:91:09:e8:59:af:82:36:d0: e1:38:cd:59:ca:66:dc:92:55:60:f8:08:87:6e:0d:a8:45:41: 1a:1a:5a:fc:55:1e:ad:92:a5:7c:4f:8f:d6:8c:d5:6f:11:79: a9:d1:70:3c:3f:c8:67:de:7a:5c:ce:03:4d:1f:27:43:6e:e2: 3a:bb:84:7b:c3:e1:4d:e3:e4:06:74:d8:5e:59:9b:3f:9f:9a: 4d:41:93:90:3d:3a:4f:47:c1:8b:37:7c:0f:38:db:de:8a:ef: fc:41:7b:41:65:51:41:9b:9d:14:21:e9:a7:4e:64:e2:59:9f: f0:d3:b5:1a:30:a7:df:d6:10:83:93:9f:fd:98:e6:54:b8:f3: cd:c8:14:76:2e:ba:3e:2b:22:08:4d:30:65:0c:2f:a8:18:c9: 37:df:b0:16:2c:70:d4:02:9f:38:c8:0c:4a:e4:2c:17:0b:68: 23:66:d8:95:b6:93:df:b4:cc:e7:39:dc:34:c1:3e:15:fc:c7: 50:9f:ca:56 -----BEGIN CERTIFICATE----- MIIDCTCCAfGgAwIBAgIUPNov/TjS/tWMivZVHqHXCsSCbpcwDQYJKoZIhvcNAQEL BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDYxNjE4NTQzOVoXDTI1MDcx NjE4NTQzOVowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAybAGXJ+Yd/u9V5lOHis9pW24bJ95Kcol4SpAzSqUMELD oGzTN2b+uOD308FonhzkbzB/18wbsAqHOaRquYmH6bIu/7DzxMpo/GpzTsuELxn4 1p2m1Ki+zqcowsR+8TZrRms2ENkB4Q3AXu2gxSNhXn3wXhgJcwDgdj/6Mg/reAsm anntxPEdM7O65VaCaRoTVpz0t49nhTIdKUZ+nzR18d6mThFT68zjSk/s8eszPDiv JQzFctgiXC/Z08rxPN/xLYbGHoClJ4WZebm8yXGP9r5z6KHF8CkbzFzhcRXctYtc 8+wTGqVcoexCB3//LCetrFs2lPABmj30lBfWLv5L2QIDAQABo1MwUTAdBgNVHQ4E FgQU9TCPZYAPowKWhWuQFAwDbeWmPk4wHwYDVR0jBBgwFoAU9TCPZYAPowKWhWuQ FAwDbeWmPk4wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEABVH4 D4cZo6vtxeWNCgX16UUurAcWmX8BV/TnUfi861dBlgfFIkzeRSTJV65mmG5BT/xJ zyZizsRoswYj7Rmhp5EJ6FmvgjbQ4TjNWcpm3JJVYPgIh24NqEVBGhpa/FUerZKl fE+P1ozVbxF5qdFwPD/IZ956XM4DTR8nQ27iOruEe8PhTePkBnTYXlmbP5+aTUGT kD06T0fBizd8Dzjb3orv/EF7QWVRQZudFCHpp05k4lmf8NO1GjCn39YQg5Of/Zjm VLjzzcgUdi66PisiCE0wZQwvqBjJN9+wFixw1AKfOMgMSuQsFwtoI2bYlbaT37TM 5zncNME+FfzHUJ/KVg== -----END CERTIFICATE-----

infrastructure/docker/docker-compose.database.yml

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ version: "3.8"
33

44
services:
55
postgres:
6-
image: ghcr.io/kesha123/nodejs-rest-api/postgres:${DATABASE_IMAGE_TAG:-latest}
6+
image: postgres:${DATABASE_IMAGE_TAG:-latest}
77
container_name: postgres
88
command: >
99
-c ssl=on
@@ -26,20 +26,10 @@ services:
2626
timeout: 5s
2727
retries: 5
2828

29-
migrations:
30-
image: ghcr.io/kesha123/nodejs-rest-api/migrations:${MIGRATIONS_IMAGE_TAG:-latest}
31-
env_file:
32-
- .env
33-
depends_on:
34-
- postgres
35-
3629

3730
networks:
3831
nodejs-rest-api:
3932
driver: bridge
40-
ipam:
41-
config:
42-
- subnet: 172.28.0.0/16
4333

4434

4535
volumes:
Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
version: "3.8"
22

33

4-
include:
5-
- docker-compose.database.yaml
6-
7-
84
services:
95
nginx-proxy:
10-
image: ghcr.io/kesha123/nodejs-rest-api/nginx-proxy:${NGINX_PROXY_IMAGE_TAG:-stable-alpine3.21}
6+
image: nginx:${NGINX_PROXY_IMAGE_TAG:-stable-alpine3.21}
117
container_name: nginx-proxy
128
volumes:
13-
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
9+
- ./nginx.conf:/etc/nginx/nginx.conf:ro
1410
networks:
1511
- nodejs-rest-api
1612
ports:
@@ -22,10 +18,15 @@ services:
2218
api:
2319
image: ghcr.io/kesha123/nodejs-rest-api/api:${API_IMAGE_TAG:-latest}
2420
container_name: api
21+
volumes:
22+
- ./ssl/privkey.pem:/app/ssl/privkey.pem
23+
- ./ssl/server.crt:/app/ssl/server.crt
24+
- ./ssl/server.key.bak:/app/ssl/server.key
2525
env_file:
2626
- .env
27-
depends_on:
28-
- postgres
29-
- migrations
3027
networks:
3128
- nodejs-rest-api
29+
30+
networks:
31+
nodejs-rest-api:
32+
driver: bridge

0 commit comments

Comments
 (0)