diff --git a/.docker/entrypoint.sh b/.docker/entrypoint.sh new file mode 100755 index 00000000..c02b209f --- /dev/null +++ b/.docker/entrypoint.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +npm run start diff --git a/.docker/entrypoint.test.sh b/.docker/entrypoint.test.sh new file mode 100755 index 00000000..f58591c6 --- /dev/null +++ b/.docker/entrypoint.test.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +echo ".................................." + +echo "Running unit tests" +npm run test diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..bba8d995 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +node_modules +.github +.vscode +sonar-project.properties +parser.py diff --git a/Dockerfile b/Dockerfile index b5b90df0..be57f601 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,20 @@ -FROM node:18.17.0-alpine as BUILD_NODE_MODULES +FROM node:18.17.0-alpine RUN apk update && apk add curl bash make && rm -rf /var/cache/apk/* -WORKDIR /home/node/app +WORKDIR /app -RUN npm i -g --unsafe-perm --allow-root -g expo-cli@6.3.10 +RUN npm i -g --unsafe-perm --allow-root -g expo-cli@6.3.10 @expo/ngrok@4.1.0 COPY package*.json ./ RUN npm ci --legacy-peer-deps +COPY . . -FROM node:18.17.0-alpine - -ENV NODE_ENV=production - -WORKDIR /app - -COPY --chown=node:node ./ /app -COPY --chown=node:node --from=BUILD_NODE_MODULES /home/node/app/node_modules /app/node_modules +RUN chmod +x /app/.docker/entrypoint.sh USER node EXPOSE 8081 - -ENTRYPOINT ["npm"] -CMD ["start"] +ENTRYPOINT ["/app/.docker/entrypoint.sh"] diff --git a/docker-compose.test.yml b/docker-compose.test.yml new file mode 100644 index 00000000..96ef107c --- /dev/null +++ b/docker-compose.test.yml @@ -0,0 +1,13 @@ +version: '3.7' +services: + gerocuidado-front-test: + build: + context: . + dockerfile: Dockerfile + container_name: gerocuidado-front-test + ports: + - '8081:8081' + volumes: + - ./:/app + - /app/node_modules + entrypoint: ./.docker/entrypoint.test.sh diff --git a/docker-compose.yml b/docker-compose.yml index 9c912c23..1c473e82 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,15 @@ version: '3.7' services: - gerocuidado-usuario-front: + gerocuidado-front: build: context: . dockerfile: Dockerfile - container_name: gerocuidado-usuario-front + container_name: gerocuidado-front ports: - '8081:8081' volumes: - ./:/app - /app/node_modules + environment: + - EXPO_DEVTOOLS_LISTEN_ADDRESS=0.0.0.0 + - NODE_ENV=${NODE_ENV} diff --git a/package-lock.json b/package-lock.json index fae18c98..66c1c8dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3149,9 +3149,9 @@ } }, "node_modules/@expo/metro-runtime": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-2.2.12.tgz", - "integrity": "sha512-jrkCbEhNvZ+W3Fl9xzf3hpyYyDAoQUT3YNeSOc49uJ8bgnINrXgtQItazQEnHIb1nm3XCkAcybg1M1u3ViPYlA==", + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-2.2.13.tgz", + "integrity": "sha512-DRmaRS2M0XSaofcpkpXNUbnNyFjx2v6Em4alBvL4bDqRB52Aoe5TBxIITtDLoP+SzfzxcFoupXWzvf10FB70ww==", "dependencies": { "@bacons/react-views": "^1.1.3", "qs": "^6.10.3" @@ -11612,9 +11612,9 @@ } }, "node_modules/expo-head": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/expo-head/-/expo-head-0.0.16.tgz", - "integrity": "sha512-6wpRhWwbe3std5iHMf20nnXd5f7hoaSVFa9f3fbl8m1qXcmlwi6FpOzxL9OYFw+qD+riZWrNjR6okEuB0iax0A==", + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/expo-head/-/expo-head-0.0.17.tgz", + "integrity": "sha512-N8UMN+uxQdp+tXVgSblKnd7EyMRa09EgS9dyCDxU5Sj7BpXOzt5R2p8/msBx1vWx6c0Afd5vp0BDnobUf2nAOg==", "dependencies": { "react-helmet-async": "^1.3.0" }, @@ -12011,17 +12011,17 @@ } }, "node_modules/expo-router": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-2.0.10.tgz", - "integrity": "sha512-5x+/CKfgPpCm6mSsPvI1EWifuN3fKpj2wrCyDZpgWm8lo0eIxGIvLW2aNU7eK5N0jFWAW5GyrLRO4rHkAomzIg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-2.0.11.tgz", + "integrity": "sha512-LKGWeOzrmyPAPmPCQB7dZLqf55kP9RWORp/y+BnPQ3wi2OMInK6Wl4UI/EUlpU6BWClsbg7YeifdbzBmPHICUw==", "dependencies": { "@bacons/react-views": "^1.1.3", - "@expo/metro-runtime": "2.2.12", + "@expo/metro-runtime": "2.2.13", "@radix-ui/react-slot": "1.0.1", "@react-navigation/bottom-tabs": "~6.5.7", "@react-navigation/native": "~6.1.6", "@react-navigation/native-stack": "~6.9.12", - "expo-head": "0.0.16", + "expo-head": "0.0.17", "expo-splash-screen": "~0.20.2", "query-string": "7.1.3", "react-helmet-async": "^1.3.0", @@ -12324,209 +12324,6 @@ "node": ">=8" } }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - - "dependencies": { - "@expo/code-signing-certificates": "0.0.5", - "@expo/config": "~8.1.0", - "@expo/config-plugins": "~7.2.0", - "arg": "4.1.0", - "chalk": "^4.1.2", - "expo-eas-client": "~0.6.0", - "expo-manifests": "~0.7.0", - "expo-structured-headers": "~3.3.0", - "expo-updates-interface": "~0.10.0", - "fbemitter": "^3.0.0", - "resolve-from": "^5.0.0" - }, - "bin": { - "expo-updates": "bin/cli.js" - }, - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-updates-interface": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.10.1.tgz", - "integrity": "sha512-I6JMR7EgjXwckrydDmrkBEX/iw750dcqpzQVsjznYWfi0HTEOxajLHB90fBFqQkUV5i5s4Fd3hYQ1Cn0oMzUbA==", - "peerDependencies": { - "expo": "*" - } - }, - "node_modules/expo-updates/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expo-updates/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/expo-updates/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/expo-updates/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/expo-updates/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/expo-updates/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expo/node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/expo/node_modules/@types/yargs": { - "version": "15.0.17", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.17.tgz", - "integrity": "sha512-cj53I8GUcWJIgWVTSVe2L7NJAB5XWGdsoMosVvUgv1jEnMbAcsbaCzt1coUcyi8Sda5PgTWAooG8jNyDTD+CWA==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/expo/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expo/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/expo/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/expo/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/expo/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/expo/node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/expo/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/expo/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -23869,4 +23666,4 @@ } } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 346ec107..2ca87d8a 100644 --- a/package.json +++ b/package.json @@ -3,15 +3,12 @@ "version": "1.0.0", "main": "expo-router/entry", "scripts": { - "start": "NODE_ENV=development expo start", - "android": "NODE_ENV=development expo start --android", - "ios": "NODE_ENV=development expo start --ios", - "web": "NODE_ENV=development expo start --web", - "start:prod": "NODE_ENV=production expo start --tunnel", - "android:prod": "NODE_ENV=production expo start --android", - "ios:prod": "NODE_ENV=production expo start --ios", - "web:prod": "NODE_ENV=production expo start --web", - "test": "jest", + "start": "expo start", + "start:tunnel": "expo start --tunnel", + "android": "expo start --android", + "ios": "expo start --ios", + "web": "expo start --web", + "test": "jest --forceExit --detectOpenHandles --colors --coverage", "lint": "eslint . --fix" }, "dependencies": {