@digitaldefiance/express-suite-starter 2.3.9 → 2.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/core/package-resolver.d.ts.map +1 -1
- package/dist/src/core/package-resolver.js +2 -2
- package/dist/src/core/package-resolver.js.map +1 -1
- package/dist/src/core/plugins/example-plugin.js +2 -2
- package/dist/src/core/plugins/example-plugin.js.map +1 -1
- package/dist/src/core/step-executor.js +1 -1
- package/dist/src/core/step-executor.js.map +1 -1
- package/dist/src/core/validators/post-generation-validator.d.ts.map +1 -1
- package/dist/src/core/validators/post-generation-validator.js +1 -1
- package/dist/src/core/validators/post-generation-validator.js.map +1 -1
- package/dist/src/generate-monorepo.d.ts.map +1 -1
- package/dist/src/generate-monorepo.js +38 -5
- package/dist/src/generate-monorepo.js.map +1 -1
- package/dist/src/i18n/starter-string-key.d.ts +3 -0
- package/dist/src/i18n/starter-string-key.d.ts.map +1 -1
- package/dist/src/i18n/starter-string-key.js +3 -0
- package/dist/src/i18n/starter-string-key.js.map +1 -1
- package/dist/src/i18n/strings/de.d.ts.map +1 -1
- package/dist/src/i18n/strings/de.js +5 -2
- package/dist/src/i18n/strings/de.js.map +1 -1
- package/dist/src/i18n/strings/en-gb.d.ts +3 -0
- package/dist/src/i18n/strings/en-gb.d.ts.map +1 -1
- package/dist/src/i18n/strings/en-us.d.ts.map +1 -1
- package/dist/src/i18n/strings/en-us.js +5 -2
- package/dist/src/i18n/strings/en-us.js.map +1 -1
- package/dist/src/i18n/strings/es.d.ts.map +1 -1
- package/dist/src/i18n/strings/es.js +5 -2
- package/dist/src/i18n/strings/es.js.map +1 -1
- package/dist/src/i18n/strings/fr.d.ts.map +1 -1
- package/dist/src/i18n/strings/fr.js +20 -17
- package/dist/src/i18n/strings/fr.js.map +1 -1
- package/dist/src/i18n/strings/ja.d.ts.map +1 -1
- package/dist/src/i18n/strings/ja.js +5 -2
- package/dist/src/i18n/strings/ja.js.map +1 -1
- package/dist/src/i18n/strings/uk.d.ts.map +1 -1
- package/dist/src/i18n/strings/uk.js +9 -6
- package/dist/src/i18n/strings/uk.js.map +1 -1
- package/dist/src/i18n/strings/zh-cn.d.ts.map +1 -1
- package/dist/src/i18n/strings/zh-cn.js +5 -2
- package/dist/src/i18n/strings/zh-cn.js.map +1 -1
- package/dist/src/i18n/translations-all.d.ts +3 -0
- package/dist/src/i18n/translations-all.d.ts.map +1 -1
- package/dist/src/utils/diff-viewer.d.ts.map +1 -1
- package/dist/src/utils/diff-viewer.js.map +1 -1
- package/dist/src/utils/doc-generator.js +1 -1
- package/dist/src/utils/doc-generator.js.map +1 -1
- package/package.json +10 -5
- package/scaffolding/api/src/main.ts.mustache +8 -1
- package/scaffolding/inituserdb/src/main.ts.mustache +12 -2
- package/scaffolding/root/.dockerignore +68 -0
- package/scaffolding/root/Dockerfile.mustache +47 -0
- package/scaffolding/root/deploy-ecr.sh.mustache +117 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations-all.d.ts","sourceRoot":"","sources":["../../../src/i18n/translations-all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"translations-all.d.ts","sourceRoot":"","sources":["../../../src/i18n/translations-all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS3B,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-viewer.d.ts","sourceRoot":"","sources":["../../../src/utils/diff-viewer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diff-viewer.d.ts","sourceRoot":"","sources":["../../../src/utils/diff-viewer.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAYrC,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,OAAO,CAAC,MAAM,CAAC,YAAY;IAU3B,OAAO,CAAC,MAAM,CAAC,YAAY;IAU3B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAe/B,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;CAU5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-viewer.js","sourceRoot":"","sources":["../../../src/utils/diff-viewer.ts"],"names":[],"mappings":";;;AAAA,0CAAuC;
|
|
1
|
+
{"version":3,"file":"diff-viewer.js","sourceRoot":"","sources":["../../../src/utils/diff-viewer.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ const logger_1 = require("../cli/logger");
|
|
|
40
40
|
class DocGenerator {
|
|
41
41
|
static generateProjectDocs(context) {
|
|
42
42
|
const monorepoPath = context.state.get('monorepoPath');
|
|
43
|
-
const
|
|
43
|
+
const _workspaceName = context.config.workspace?.name || 'project';
|
|
44
44
|
this.generateReadme(monorepoPath, context);
|
|
45
45
|
this.generateArchitectureDoc(monorepoPath, context);
|
|
46
46
|
this.generateApiDocs(monorepoPath, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-generator.js","sourceRoot":"","sources":["../../../src/utils/doc-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAyB;AACzB,2CAA6B;AAC7B,0CAAuC;AAEvC,MAAa,YAAY;IACvB,MAAM,CAAC,mBAAmB,CAAC,OAAyB;QAClD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,
|
|
1
|
+
{"version":3,"file":"doc-generator.js","sourceRoot":"","sources":["../../../src/utils/doc-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAyB;AACzB,2CAA6B;AAC7B,0CAAuC;AAEvC,MAAa,YAAY;IACvB,MAAM,CAAC,mBAAmB,CAAC,OAAyB;QAClD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,SAAS,CAAC;QAEnE,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,YAAoB,EAAE,OAAyB;QAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,SAAS,CAAC;QAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QAE/C,MAAM,MAAM,GAAG,KAAK,aAAa;;;;;;;;EAQnC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCnE,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/D,eAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,YAAoB,EAAE,OAAyB;QACpF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QAE/C,MAAM,IAAI,GAAG;;;;;EAKf,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI;EAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;CAqBtD,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;QACnE,eAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC7C,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,YAAoB,EAAE,OAAyB;QAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAC/E,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCnB,CAAC;QAEE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACvC,eAAM,CAAC,GAAG,CAAC,gBAAgB,UAAU,CAAC,IAAI,SAAS,CAAC,CAAC;IACvD,CAAC;CACF;AA7ID,oCA6IC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digitaldefiance/express-suite-starter",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.12",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"bin": {
|
|
6
6
|
"create-express-suite": "./dist/src/cli.js"
|
|
@@ -17,7 +17,12 @@
|
|
|
17
17
|
"create-project": "yarn start",
|
|
18
18
|
"build": "npx tsc && chmod +x dist/src/cli.js",
|
|
19
19
|
"build:logged": "npx tsc 2>&1 | ansifilter -o build.log && chmod +x dist/src/cli.js",
|
|
20
|
-
"
|
|
20
|
+
"lint": "npx eslint 'src/**/*.ts'",
|
|
21
|
+
"lint:fix": "npx eslint 'src/**/*.ts' --fix",
|
|
22
|
+
"test": "npx jest --testPathIgnorePatterns='(i18n|step-executor|plugin-manager|dry-run|system-check|package-resolver|full-generation|plugin-integration).spec.ts'",
|
|
23
|
+
"test:all": "npx jest",
|
|
24
|
+
"test:unit": "npx jest tests/unit",
|
|
25
|
+
"test:integration": "npx jest tests/integration",
|
|
21
26
|
"test:watch": "npx jest --watch",
|
|
22
27
|
"test:coverage": "npx jest --coverage",
|
|
23
28
|
"test:logged": "npx jest 2>&1 | ansifilter -o test.log",
|
|
@@ -26,8 +31,8 @@
|
|
|
26
31
|
"publish:public": "npm publish --access public"
|
|
27
32
|
},
|
|
28
33
|
"dependencies": {
|
|
29
|
-
"@digitaldefiance/express-suite-react-components": "^2.9.
|
|
30
|
-
"@digitaldefiance/i18n-lib": "3.8.
|
|
34
|
+
"@digitaldefiance/express-suite-react-components": "^2.9.18",
|
|
35
|
+
"@digitaldefiance/i18n-lib": "^3.8.16",
|
|
31
36
|
"@inquirer/prompts": "^7.5.0",
|
|
32
37
|
"chalk": "^4.1.2",
|
|
33
38
|
"handlebars": "^4.7.8",
|
|
@@ -35,7 +40,7 @@
|
|
|
35
40
|
"validator": "^13.15.0"
|
|
36
41
|
},
|
|
37
42
|
"devDependencies": {
|
|
38
|
-
"@digitaldefiance/express-suite-test-utils": "1.0.
|
|
43
|
+
"@digitaldefiance/express-suite-test-utils": "1.0.14",
|
|
39
44
|
"@nx/js": "22.0.2",
|
|
40
45
|
"@nx/workspace": "22.0.2",
|
|
41
46
|
"@types/jest": "^29.5.0",
|
|
@@ -15,5 +15,12 @@ const app: App = new App(
|
|
|
15
15
|
const context = GlobalActiveContext.getInstance<CoreLanguageCode, IActiveContext<CoreLanguageCode>>();
|
|
16
16
|
context.languageContextSpace = 'admin';
|
|
17
17
|
(async () => {
|
|
18
|
-
|
|
18
|
+
try {
|
|
19
|
+
await app.start();
|
|
20
|
+
} catch (error) {
|
|
21
|
+
console.error('Failed to start the application:', error instanceof Error ? error.message : error);
|
|
22
|
+
console.error('Stack trace:', error instanceof Error ? error.stack : 'No stack trace');
|
|
23
|
+
console.error('Full error object:', JSON.stringify(error, null, 2));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
19
26
|
})();
|
|
@@ -142,8 +142,18 @@ async function main() {
|
|
|
142
142
|
);
|
|
143
143
|
if (app.environment.detailedDebug) {
|
|
144
144
|
DatabaseInitializationService.printServerInitResults(result.data);
|
|
145
|
-
|
|
146
|
-
//
|
|
145
|
+
|
|
146
|
+
// Handle --setEnv flag to write credentials to .env file
|
|
147
|
+
if (process.argv.includes('--setEnv')) {
|
|
148
|
+
const apiEnvPath = join(
|
|
149
|
+
BaseApplication.distDir,
|
|
150
|
+
'..', // Go up from dist
|
|
151
|
+
'{{prefix}}-api',
|
|
152
|
+
'.env',
|
|
153
|
+
);
|
|
154
|
+
DatabaseInitializationService.writeEnvFile(apiEnvPath, result.data);
|
|
155
|
+
}
|
|
156
|
+
|
|
147
157
|
const initHash = DatabaseInitializationService.serverInitResultHash(
|
|
148
158
|
result.data,
|
|
149
159
|
);
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Dependencies (except in dist folder)
|
|
2
|
+
node_modules
|
|
3
|
+
npm-debug.log
|
|
4
|
+
yarn-error.log
|
|
5
|
+
|
|
6
|
+
# Source files (we only copy dist folder)
|
|
7
|
+
express-suite-example-api/src
|
|
8
|
+
express-suite-example-react/src
|
|
9
|
+
express-suite-example-api-lib/src
|
|
10
|
+
express-suite-example-react-lib/src
|
|
11
|
+
express-suite-example-lib/src
|
|
12
|
+
express-suite-example-inituserdb/src
|
|
13
|
+
express-suite-example-api-e2e
|
|
14
|
+
express-suite-example-react-e2e
|
|
15
|
+
|
|
16
|
+
# Build outputs (except dist)
|
|
17
|
+
tmp
|
|
18
|
+
out-tsc
|
|
19
|
+
|
|
20
|
+
# Environment files (will be set via container env vars)
|
|
21
|
+
.env
|
|
22
|
+
.env.local
|
|
23
|
+
.env.production
|
|
24
|
+
render.env
|
|
25
|
+
|
|
26
|
+
# Dev container
|
|
27
|
+
.devcontainer
|
|
28
|
+
|
|
29
|
+
# Git
|
|
30
|
+
.git
|
|
31
|
+
.gitignore
|
|
32
|
+
.gitattributes
|
|
33
|
+
|
|
34
|
+
# IDE
|
|
35
|
+
.vscode
|
|
36
|
+
.idea
|
|
37
|
+
*.swp
|
|
38
|
+
*.swo
|
|
39
|
+
*~
|
|
40
|
+
|
|
41
|
+
# OS files
|
|
42
|
+
.DS_Store
|
|
43
|
+
Thumbs.db
|
|
44
|
+
|
|
45
|
+
# Testing
|
|
46
|
+
coverage
|
|
47
|
+
.nx/cache
|
|
48
|
+
.nx/workspace-data
|
|
49
|
+
|
|
50
|
+
# Documentation (optional - remove these lines if you want docs in image)
|
|
51
|
+
*.md
|
|
52
|
+
!README.md
|
|
53
|
+
|
|
54
|
+
# Config files not needed in container
|
|
55
|
+
.editorconfig
|
|
56
|
+
.prettierrc
|
|
57
|
+
.eslintrc*
|
|
58
|
+
jest.config.*
|
|
59
|
+
tsconfig*.json
|
|
60
|
+
|
|
61
|
+
# Scripts
|
|
62
|
+
*.sh
|
|
63
|
+
!entrypoint.sh
|
|
64
|
+
|
|
65
|
+
# Yarn
|
|
66
|
+
.yarn/cache
|
|
67
|
+
.yarn/install-state.gz
|
|
68
|
+
.pnp.*
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Dockerfile for ECR NX MERN Application
|
|
2
|
+
# Production runtime image (build locally first)
|
|
3
|
+
# Run: yarn build && docker build -t {{prefix}} .
|
|
4
|
+
|
|
5
|
+
FROM node:22-bookworm-slim
|
|
6
|
+
|
|
7
|
+
WORKDIR /app
|
|
8
|
+
|
|
9
|
+
# Install necessary runtime dependencies for MongoDB Memory Server
|
|
10
|
+
RUN apt-get update && \
|
|
11
|
+
apt-get install -y --no-install-recommends \
|
|
12
|
+
ca-certificates \
|
|
13
|
+
libcurl4 \
|
|
14
|
+
libgssapi-krb5-2 \
|
|
15
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
16
|
+
|
|
17
|
+
# Enable corepack for Yarn 4.x support
|
|
18
|
+
RUN corepack enable
|
|
19
|
+
|
|
20
|
+
# Copy Yarn configuration and dependencies from workspace root
|
|
21
|
+
COPY .yarnrc.yml ./
|
|
22
|
+
COPY package.json yarn.lock ./
|
|
23
|
+
|
|
24
|
+
# Install ALL dependencies first (this gets dotenv and other workspace deps)
|
|
25
|
+
RUN yarn install && yarn cache clean
|
|
26
|
+
|
|
27
|
+
# Copy pre-built artifacts (must run `yarn build` first)
|
|
28
|
+
COPY dist/{{prefix}}-api ./
|
|
29
|
+
COPY dist/{{prefix}}-react ./dist/{{prefix}}-react
|
|
30
|
+
|
|
31
|
+
# Remove .env file - environment variables should be used instead
|
|
32
|
+
RUN rm -f .env
|
|
33
|
+
|
|
34
|
+
# Set environment variables
|
|
35
|
+
ENV NODE_ENV=production \
|
|
36
|
+
PORT=3000 \
|
|
37
|
+
HOST=0.0.0.0
|
|
38
|
+
|
|
39
|
+
# Expose port
|
|
40
|
+
EXPOSE 3000
|
|
41
|
+
|
|
42
|
+
# Health check
|
|
43
|
+
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s \
|
|
44
|
+
CMD node -e "require('http').get('http://localhost:3000/api/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"
|
|
45
|
+
|
|
46
|
+
# Start the application
|
|
47
|
+
CMD ["node", "main.js"]
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# deploy-ecr.sh - Build and push to AWS ECR
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
# Configuration
|
|
7
|
+
REGISTRY="${ECR_REGISTRY:-public.ecr.aws/<registry_alias>/<repository_name>:latest}"
|
|
8
|
+
IMAGE_NAME="${IMAGE_NAME:-{{prefix}}}"
|
|
9
|
+
TAG="${1:-{{prefix}}-latest}"
|
|
10
|
+
|
|
11
|
+
# Extract region from registry URL
|
|
12
|
+
if [[ $REGISTRY == *.dkr.ecr.*.amazonaws.com* ]]; then
|
|
13
|
+
REGION=$(echo "$REGISTRY" | sed -n 's/.*\.ecr\.\([^.]*\)\.amazonaws.*/\1/p')
|
|
14
|
+
ACCOUNT_ID=$(echo "$REGISTRY" | cut -d'.' -f1)
|
|
15
|
+
LOGIN_DOMAIN="${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com"
|
|
16
|
+
else
|
|
17
|
+
REGION="${AWS_REGION:-us-east-1}"
|
|
18
|
+
LOGIN_DOMAIN="public.ecr.aws"
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "🚀 AWS ECR Deployment"
|
|
22
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
23
|
+
echo "Repository: $REGISTRY"
|
|
24
|
+
echo "Tag: $TAG"
|
|
25
|
+
echo "Full Image: $REGISTRY:$TAG"
|
|
26
|
+
echo ""
|
|
27
|
+
|
|
28
|
+
# Check if Docker is running
|
|
29
|
+
if ! docker info > /dev/null 2>&1; then
|
|
30
|
+
echo "❌ Error: Docker is not running"
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
# Check if AWS CLI is available
|
|
35
|
+
if ! command -v aws &> /dev/null; then
|
|
36
|
+
echo "❌ Error: AWS CLI is not installed"
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Check AWS credentials
|
|
41
|
+
echo "🔍 Checking AWS credentials..."
|
|
42
|
+
if ! aws sts get-caller-identity > /dev/null 2>&1; then
|
|
43
|
+
echo "❌ Error: AWS credentials not configured"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# Fix Docker credential helper issue
|
|
48
|
+
echo "🔧 Configuring Docker credentials..."
|
|
49
|
+
mkdir -p ~/.docker
|
|
50
|
+
if [ ! -f ~/.docker/config.json ]; then
|
|
51
|
+
echo '{"credsStore":""}' > ~/.docker/config.json
|
|
52
|
+
else
|
|
53
|
+
# Backup existing config
|
|
54
|
+
cp ~/.docker/config.json ~/.docker/config.json.backup
|
|
55
|
+
# Set credsStore to empty
|
|
56
|
+
jq '.credsStore = ""' ~/.docker/config.json.backup > ~/.docker/config.json || \
|
|
57
|
+
echo '{"credsStore":""}' > ~/.docker/config.json
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
# Login to ECR
|
|
61
|
+
echo "🔐 Logging in to ECR..."
|
|
62
|
+
echo " Region: $REGION"
|
|
63
|
+
echo " Domain: $LOGIN_DOMAIN"
|
|
64
|
+
if [[ $REGISTRY == public.ecr.aws* ]]; then
|
|
65
|
+
aws ecr-public get-login-password --region us-east-1 | \
|
|
66
|
+
docker login --username AWS --password-stdin public.ecr.aws
|
|
67
|
+
else
|
|
68
|
+
aws ecr get-login-password --region "$REGION" | \
|
|
69
|
+
docker login --username AWS --password-stdin "$LOGIN_DOMAIN"
|
|
70
|
+
|
|
71
|
+
# Check if repository exists, create if it doesn't
|
|
72
|
+
REPO_NAME=$(echo "$REGISTRY" | cut -d'/' -f2-)
|
|
73
|
+
echo "📦 Checking if repository exists: $REPO_NAME"
|
|
74
|
+
if ! aws ecr describe-repositories --repository-names "$REPO_NAME" --region "$REGION" &>/dev/null; then
|
|
75
|
+
echo " Creating repository: $REPO_NAME"
|
|
76
|
+
aws ecr create-repository \
|
|
77
|
+
--repository-name "$REPO_NAME" \
|
|
78
|
+
--region "$REGION" \
|
|
79
|
+
--image-scanning-configuration scanOnPush=true \
|
|
80
|
+
--encryption-configuration encryptionType=AES256 > /dev/null
|
|
81
|
+
echo " ✓ Repository created"
|
|
82
|
+
else
|
|
83
|
+
echo " ✓ Repository exists"
|
|
84
|
+
fi
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
# Build application locally first
|
|
88
|
+
echo "🏗️ Building application locally..."
|
|
89
|
+
if [ ! -d "dist/express-suite-example-api" ]; then
|
|
90
|
+
echo " Running yarn build..."
|
|
91
|
+
yarn build
|
|
92
|
+
else
|
|
93
|
+
echo " ✓ dist folder exists, skipping yarn build"
|
|
94
|
+
echo " To force rebuild, run: rm -rf dist && ./deploy-ecr.sh"
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# Build Docker image
|
|
98
|
+
echo "📦 Building Docker image..."
|
|
99
|
+
docker build -t $IMAGE_NAME:$TAG .
|
|
100
|
+
|
|
101
|
+
# Tag image
|
|
102
|
+
echo "🏷️ Tagging image..."
|
|
103
|
+
docker tag $IMAGE_NAME:$TAG $REGISTRY:$TAG
|
|
104
|
+
|
|
105
|
+
# Push to ECR
|
|
106
|
+
echo "⬆️ Pushing to ECR..."
|
|
107
|
+
docker push $REGISTRY:$TAG
|
|
108
|
+
|
|
109
|
+
echo ""
|
|
110
|
+
echo "✅ Successfully deployed!"
|
|
111
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
112
|
+
echo "Image: $REGISTRY:$TAG"
|
|
113
|
+
echo ""
|
|
114
|
+
echo "🚀 Next steps:"
|
|
115
|
+
echo " 1. Deploy to ECS/App Runner/Elastic Beanstalk"
|
|
116
|
+
echo " 2. Set environment variables (see AWS_ECR_DEPLOYMENT.md)"
|
|
117
|
+
echo " 3. Configure load balancer and scaling"
|