More docker, express and config setup

This commit is contained in:
Florian Sylvain
2023-01-26 14:47:41 +01:00
parent 9a890135bc
commit 2082c9330c
7 changed files with 112 additions and 9 deletions
+2
View File
@@ -1,2 +1,4 @@
MYSQL_ROOT_PASSWORD=root MYSQL_ROOT_PASSWORD=root
API_PORT=7777 API_PORT=7777
# DATABASE_URL="mysql://root:root@localhost:3306/snippetsmanager"
+5 -4
View File
@@ -4,10 +4,11 @@ WORKDIR /app
COPY package.json ./ COPY package.json ./
COPY package-lock.json ./ COPY package-lock.json ./
COPY tsconfig.json ./
COPY .env ./ COPY .env ./
COPY app.js ./ ADD src ./src/
ADD routes ./routes/
ADD prisma ./prisma/ ADD prisma ./prisma/
RUN npm ci
CMD ["npm", "run", "start"] RUN npm ci
RUN npx prisma generate
CMD npm start
+1
View File
@@ -4,6 +4,7 @@
- API_PORT - API_PORT
- MYSQL_ROOT_PASSWORD - MYSQL_ROOT_PASSWORD
- DATABASE_URL `not needed when docker`
## Usage ## Usage
+3 -3
View File
@@ -5,8 +5,8 @@ services:
- .env - .env
networks: networks:
- back-net - back-net
ports: # ports:
- 3306:3306 # - 3306:3306
environment: environment:
- "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" - "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}"
- "MYSQL_DATABASE=snippetsmanager" - "MYSQL_DATABASE=snippetsmanager"
@@ -30,7 +30,7 @@ services:
networks: networks:
- back-net - back-net
ports: ports:
- "${API_PORT}:3000" - "${API_PORT}:${API_PORT}"
networks: networks:
back-net: back-net:
+80
View File
@@ -11,6 +11,7 @@
"dependencies": { "dependencies": {
"@prisma/client": "^4.9.0", "@prisma/client": "^4.9.0",
"concurrently": "^7.6.0", "concurrently": "^7.6.0",
"dotenv": "^16.0.3",
"express": "^4.18.2", "express": "^4.18.2",
"nodemon": "^2.0.20", "nodemon": "^2.0.20",
"prisma": "^4.9.0", "prisma": "^4.9.0",
@@ -18,6 +19,7 @@
}, },
"devDependencies": { "devDependencies": {
"@babel/preset-typescript": "^7.18.6", "@babel/preset-typescript": "^7.18.6",
"@types/express": "^4.17.16",
"install": "^0.13.0", "install": "^0.13.0",
"jest": "^29.4.0", "jest": "^29.4.0",
"npm": "^9.4.0", "npm": "^9.4.0",
@@ -1271,6 +1273,48 @@
"@babel/types": "^7.3.0" "@babel/types": "^7.3.0"
} }
}, },
"node_modules/@types/body-parser": {
"version": "1.19.2",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
"integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
"dev": true,
"dependencies": {
"@types/connect": "*",
"@types/node": "*"
}
},
"node_modules/@types/connect": {
"version": "3.4.35",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
"integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
"dev": true,
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/express": {
"version": "4.17.16",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.16.tgz",
"integrity": "sha512-LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA==",
"dev": true,
"dependencies": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "^4.17.31",
"@types/qs": "*",
"@types/serve-static": "*"
}
},
"node_modules/@types/express-serve-static-core": {
"version": "4.17.33",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz",
"integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==",
"dev": true,
"dependencies": {
"@types/node": "*",
"@types/qs": "*",
"@types/range-parser": "*"
}
},
"node_modules/@types/graceful-fs": { "node_modules/@types/graceful-fs": {
"version": "4.1.6", "version": "4.1.6",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
@@ -1304,6 +1348,12 @@
"@types/istanbul-lib-report": "*" "@types/istanbul-lib-report": "*"
} }
}, },
"node_modules/@types/mime": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==",
"dev": true
},
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "18.11.18", "version": "18.11.18",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
@@ -1316,6 +1366,28 @@
"integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
"dev": true "dev": true
}, },
"node_modules/@types/qs": {
"version": "6.9.7",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
"dev": true
},
"node_modules/@types/range-parser": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
"dev": true
},
"node_modules/@types/serve-static": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
"dev": true,
"dependencies": {
"@types/mime": "*",
"@types/node": "*"
}
},
"node_modules/@types/stack-utils": { "node_modules/@types/stack-utils": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
@@ -1974,6 +2046,14 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0" "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
} }
}, },
"node_modules/dotenv": {
"version": "16.0.3",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
"engines": {
"node": ">=12"
}
},
"node_modules/ee-first": { "node_modules/ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+2
View File
@@ -15,6 +15,7 @@
"dependencies": { "dependencies": {
"@prisma/client": "^4.9.0", "@prisma/client": "^4.9.0",
"concurrently": "^7.6.0", "concurrently": "^7.6.0",
"dotenv": "^16.0.3",
"express": "^4.18.2", "express": "^4.18.2",
"nodemon": "^2.0.20", "nodemon": "^2.0.20",
"prisma": "^4.9.0", "prisma": "^4.9.0",
@@ -22,6 +23,7 @@
}, },
"devDependencies": { "devDependencies": {
"@babel/preset-typescript": "^7.18.6", "@babel/preset-typescript": "^7.18.6",
"@types/express": "^4.17.16",
"install": "^0.13.0", "install": "^0.13.0",
"jest": "^29.4.0", "jest": "^29.4.0",
"npm": "^9.4.0", "npm": "^9.4.0",
+18 -1
View File
@@ -1 +1,18 @@
console.log('pouet]') import { PrismaClient } from '@prisma/client'
import express from 'express'
import * as dotenv from 'dotenv'
dotenv.config()
const app = express()
const prisma = new PrismaClient()
const port = process.env.API_PORT
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
app.get('/v1/', async (req, res, next) => {
res.send({ code: 200, message: "SnippetsManager v1.0" })
})
app.listen(port, () => console.log(`Listening on port ${port}`))