diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..e2100fe --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + "configurations": [ + { + "name": "Docker Node.js Launch", + "type": "docker", + "request": "launch", + "preLaunchTask": "docker-run: debug", + "platform": "node", + "node": { + "package": "${workspaceFolder}/code/reviews_api/package.json", + "localRoot": "${workspaceFolder}/code/reviews_api" + } + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..a280240 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,46 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "docker-build", + "label": "docker-build", + "platform": "node", + "dockerBuild": { + "dockerfile": "${workspaceFolder}/code/reviews_api/Dockerfile", + "context": "${workspaceFolder}/code/reviews_api", + "pull": true + }, + "node": { + "package": "${workspaceFolder}/code/reviews_api/package.json" + } + }, + { + "type": "docker-run", + "label": "docker-run: release", + "dependsOn": [ + "docker-build" + ], + "platform": "node", + "node": { + "package": "${workspaceFolder}/code/reviews_api/package.json" + } + }, + { + "type": "docker-run", + "label": "docker-run: debug", + "dependsOn": [ + "docker-build" + ], + "dockerRun": { + "env": { + "DEBUG": "*", + "NODE_ENV": "development" + } + }, + "node": { + "package": "${workspaceFolder}/code/reviews_api/package.json", + "enableDebugging": true + } + } + ] +} \ No newline at end of file diff --git a/code/docker-compose.yaml b/code/docker-compose.yaml index f8ed95b..9346d06 100644 --- a/code/docker-compose.yaml +++ b/code/docker-compose.yaml @@ -2,11 +2,18 @@ version: "3.9" services: db: image: mysql:latest + container_name: db expose: - 3306 volumes: - ./db:/docker-entrypoint-initdb.d restart: always + healthcheck: + test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-uroot"] # Command to check health. + interval: 5s # Interval between health checks. + timeout: 5s # Timeout for each health checking. + retries: 20 # Hou many times retries. + start_period: 10s # Estimated time to boot. environment: MYSQL_ROOT_PASSWORD: telereview MYSQL_DATABASE: telereview @@ -14,10 +21,29 @@ services: phpmyadmin: image: phpmyadmin:latest restart: always + container_name: phpmyadmin + depends_on: + - db environment: PMA_ARBITRARY: 1 PMA_HOST: db PMA_USER: root PMA_PASSWORD: telereview ports: - - 8080:80 \ No newline at end of file + - 8000:80 + + reviews_api: + container_name: reviews_api + ports: + - 8080:8080 + environment: + - NODE_ENV=production + - DB_USER=root + - DB_PASSWORD=telereview + - DB_HOST=db + - DB_NAME=telereview + - PORT=8080 + depends_on: + db: + condition: service_healthy + build: ./reviews_api \ No newline at end of file diff --git a/code/reviews_api/.dockerignore b/code/reviews_api/.dockerignore new file mode 100644 index 0000000..6d68aea --- /dev/null +++ b/code/reviews_api/.dockerignore @@ -0,0 +1,24 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/charts +**/docker-compose* +**/compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md diff --git a/code/server/.env_template b/code/reviews_api/.env_template similarity index 100% rename from code/server/.env_template rename to code/reviews_api/.env_template diff --git a/code/reviews_api/Dockerfile b/code/reviews_api/Dockerfile new file mode 100644 index 0000000..2d6681a --- /dev/null +++ b/code/reviews_api/Dockerfile @@ -0,0 +1,9 @@ +FROM node:lts-alpine +WORKDIR /usr/src/app +COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"] +RUN npm install --production --silent && mv node_modules ../ +COPY . . +EXPOSE 8080 +RUN chown -R node /usr/src/app +USER node +CMD ["node", "index.js"] diff --git a/code/server/README.md b/code/reviews_api/README.md similarity index 100% rename from code/server/README.md rename to code/reviews_api/README.md diff --git a/code/server/borne/get_handler.js b/code/reviews_api/borne/get_handler.js similarity index 100% rename from code/server/borne/get_handler.js rename to code/reviews_api/borne/get_handler.js diff --git a/code/server/borne/post_handler.js b/code/reviews_api/borne/post_handler.js similarity index 100% rename from code/server/borne/post_handler.js rename to code/reviews_api/borne/post_handler.js diff --git a/code/server/borne/structures.js b/code/reviews_api/borne/structures.js similarity index 100% rename from code/server/borne/structures.js rename to code/reviews_api/borne/structures.js diff --git a/code/server/database.js b/code/reviews_api/database.js similarity index 100% rename from code/server/database.js rename to code/reviews_api/database.js diff --git a/code/server/exemple_utilisation.py b/code/reviews_api/exemple_utilisation.py similarity index 100% rename from code/server/exemple_utilisation.py rename to code/reviews_api/exemple_utilisation.py diff --git a/code/server/index.js b/code/reviews_api/index.js similarity index 95% rename from code/server/index.js rename to code/reviews_api/index.js index 3fd05a8..1f0a375 100644 --- a/code/server/index.js +++ b/code/reviews_api/index.js @@ -7,7 +7,7 @@ import { startCronJobs } from './stats/update_stats.js'; import * as borneHandler from './borne/get_handler.js'; const app = express(); - +console.log(process.env); app.use(bodyParser.urlencoded({extended:true})) dotenv.config() app.post('/add_review', (req,res) => addReviewFromRequest(req,res)); diff --git a/code/server/package-lock.json b/code/reviews_api/package-lock.json similarity index 100% rename from code/server/package-lock.json rename to code/reviews_api/package-lock.json diff --git a/code/server/package.json b/code/reviews_api/package.json similarity index 100% rename from code/server/package.json rename to code/reviews_api/package.json diff --git a/code/server/reseaux_sociaux/post_handler.js b/code/reviews_api/reseaux_sociaux/post_handler.js similarity index 100% rename from code/server/reseaux_sociaux/post_handler.js rename to code/reviews_api/reseaux_sociaux/post_handler.js diff --git a/code/server/reseaux_sociaux/structures.js b/code/reviews_api/reseaux_sociaux/structures.js similarity index 100% rename from code/server/reseaux_sociaux/structures.js rename to code/reviews_api/reseaux_sociaux/structures.js diff --git a/code/server/stats/update_request.sql b/code/reviews_api/stats/update_request.sql similarity index 100% rename from code/server/stats/update_request.sql rename to code/reviews_api/stats/update_request.sql diff --git a/code/server/stats/update_stats.js b/code/reviews_api/stats/update_stats.js similarity index 100% rename from code/server/stats/update_stats.js rename to code/reviews_api/stats/update_stats.js diff --git a/code/server/utils.js b/code/reviews_api/utils.js similarity index 100% rename from code/server/utils.js rename to code/reviews_api/utils.js diff --git a/code/reviews_api/wait_mysql.sh b/code/reviews_api/wait_mysql.sh new file mode 100644 index 0000000..5b2ebda --- /dev/null +++ b/code/reviews_api/wait_mysql.sh @@ -0,0 +1,6 @@ +while ! wget $DB_HOST:3306; +do + sleep 1 + echo "Waiting for database connection..." +done +node index.js \ No newline at end of file