Ergebnis 1 bis 6 von 6

Thema: Docker & Heroku

  1. #1
    Mitglied
    Registriert seit
    Nov 2015
    Ort
    Schweiz
    Beiträge
    42

    Exclamation Docker & Heroku

    Hallo zusammen

    Ich möchte eine Applikation "dockerzieren" und in die Cloud deployen sprich auf Heroku. Bis dato habe ich dies noch nie gemacht und komme an meine Grenzen, da ich nicht weiss was ich beachten muss und wie ich die Fehler beheben kann.
    Die Applikation kommt mit Node.js & dem Framework React.js daher.

    Was habe ich bis anhin gemacht?
    Docker:
    -Folgendes Dockerfile erstellt:
    Code (JavaScript):
    1.  
    2. FROM node:10
    3. WORKDIR /usr/src/app
    4. COPY package*.json ./
    5. RUN npm install
    6. RUN npm audit fix
    7. COPY . .
    8. EXPOSE 8080
    9. CMD [ "npm", "start" ]
    10.  
    -Ein Docker ignore File erstellt und die Node Module ausgeschlossen
    -Docker Desktop auf Windows installiert
    -Folgende Befehle ausgeführt:
    Code (JavaScript):
    1.  
    2. docker build -t <Mein Benutzername>/app  //Dockerfile erstellen
    3. docker images //Dockerimages anzeigen
    4. docker run -p 49160:8080 -d <Mein Benutzername>/app   //Image ausführen
    5. docker ps  //Container ID abrufen
    6. docker logs <ContainerID> //Fehlerlog abrufen
    7.  
    Leider kann das Image nicht ausgeführt werden und endet im Fehlercode:
    Code (JavaScript):
    1.  
    2. name@1.1.0 start /usr/src/app
    3. > concurrently --kill-others "webpack-dev-server --mode development --inline --progress" "cd backend && node server.js"
    4.  
    5. [1] internal/modules/cjs/loader.js:638
    6. [1]     throw err;
    7. [1]     ^
    8. [1]
    9. [1] Error: Cannot find module '../models/CustomDates'
    10. [1]     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    11. [1]     at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    12. [1]     at Module.require (internal/modules/cjs/loader.js:690:17)
    13. [1]     at require (internal/modules/cjs/helpers.js:25:18)
    14. [1]     at Object.<anonymous> (/usr/src/app/backend/controller/CustomDates.js:2:19)
    15. [1]     at Module._compile (internal/modules/cjs/loader.js:776:30)
    16. [1]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    17. [1]     at Module.load (internal/modules/cjs/loader.js:653:32)
    18. [1]     at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    19. [1]     at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    20. [1]     at Module.require (internal/modules/cjs/loader.js:690:17)
    21. [1]     at require (internal/modules/cjs/helpers.js:25:18)
    22. [1]     at Object.<anonymous> (/usr/src/app/backend/routes/CustomDates.js:3:19)
    23. [1]     at Module._compile (internal/modules/cjs/loader.js:776:30)
    24. [1]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    25. [1]     at Module.load (internal/modules/cjs/loader.js:653:32)
    26. [1] cd backend && node server.js exited with code 1
    27. --> Sending SIGTERM to other processes..
    28. [0] webpack-dev-server --mode development --inline --progress exited with code SIGTERM
    29. npm ERR! code ELIFECYCLE
    30. npm ERR! errno 1
    31. npm ERR! name@1.1.0 start: `concurrently --kill-others "webpack-dev-server --mode development --inline --progress" "cd backend && node server.js"`
    32. npm ERR! Exit status 1
    33. npm ERR!
    34. npm ERR! Failed at the verwaltung@1.0.0 start script.
    35. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    36.  
    "Cannot find module ..." Finde ich komisch, da das File grundsätzlich existiert und auch dort zu finden ist.

    ###
    Heroku
    ###
    Nun habe ich versucht es ohne Docker auf Heroku zu deployen - dort kann die Applikation ebenfalls nicht ausgeführt werden.
    --> Webpack konnte nicht gefunden werden

    ###
    Lokal kann die Applikation ohne Probleme ausgeführt werden. Ich vermute es könnte an verwendeten Modulen liegen. Ich bin mir aber überhaupt nicht sicher wie ich vorgehen soll, deshalb erhoffe ich mir jemanden zu finden welcher sich mit Docker auskennt.

    Vielleicht hilft es wenn ich mal das Package.json poste:
    Code (JavaScript):
    1.  
    2. {
    3.    "name": "name",
    4.    "version": "1.1.0",
    5.    "description": "Name",
    6.    "scripts": {
    7.       "start": "concurrently --kill-others \"webpack-dev-server --mode development --inline --progress\" \"cd backend && node server.js\"",
    8.       "build": "webpack --mode production"
    9.    },
    10.    "keywords": [
    11.       "reactjs"
    12.    ],
    13.    "author": "Name",
    14.    "license": "ISP",
    15.    "devDependencies": {
    16.       "babel-core": "^6.26.0",
    17.       "babel-eslint": "^7.2.3",
    18.       "babel-loader": "^7.1.4",
    19.       "babel-preset-env": "^1.6.1",
    20.       "babel-preset-react": "^6.24.1",
    21.       "babel-preset-stage-2": "^6.24.1",
    22.       "clean-webpack-plugin": "^0.1.19",
    23.       "concurrently": "^4.1.0",
    24.       "css-loader": "^0.28.11",
    25.       "eslint": "^4.19.1",
    26.       "eslint-config-react-app": "^2.1.0",
    27.       "eslint-plugin-flowtype": "^2.47.1",
    28.       "eslint-plugin-import": "^2.12.0",
    29.       "eslint-plugin-jsx-a11y": "^5.1.1",
    30.       "eslint-plugin-react": "^7.8.2",
    31.       "extract-text-webpack-plugin": "^3.0.2",
    32.       "file-loader": "^1.1.11",
    33.       "friendly-errors-webpack-plugin": "^1.7.0",
    34.       "html-loader": "^0.5.5",
    35.       "html-webpack-plugin": "^3.2.0",
    36.       "mini-css-extract-plugin": "^0.4.0",
    37.       "node-sass": "^4.12.0",
    38.       "react": "^16.5.2",
    39.       "react-dom": "^16.5.2",
    40.       "sass-loader": "^6.0.7",
    41.       "uglifyjs-webpack-plugin": "^1.2.5",
    42.       "url-loader": "^1.0.1",
    43.       "webpack": "4.5.0",
    44.       "webpack-bundle-analyzer": "2.11.1",
    45.       "webpack-cli": "2.0.14",
    46.       "webpack-dev-server": "^3.2.1"
    47.    },
    48.    "dependencies": {
    49.       "@material-ui/core": "^3.9.2",
    50.       "@material-ui/icons": "^1.1.1",
    51.       "auth0-js": "^9.10.0",
    52.       "autosuggest-highlight": "3.1.1",
    53.       "axios": "^0.19.0",
    54.       "babel-polyfill": "^6.26.0",
    55.       "body-parser": "^1.19.0",
    56.       "chart.js": "^2.7.3",
    57.       "classnames": "2.2.6",
    58.       "concurrently": "^4.0.1",
    59.       "cors": "^2.8.5",
    60.       "downshift": "^3.2.2",
    61.       "draft-js": "0.10.5",
    62.       "express": "^4.16.4",
    63.       "firebase": "^6.1.0",
    64.       "globalize": "^0.1.1",
    65.       "google-map-react": "^1.1.2",
    66.       "hls.js": "^0.12.2",
    67.       "instantsearch.css": "^7.1.0",
    68.       "jquery": "^3.4.1",
    69.       "leaflet": "^1.4.0",
    70.       "material-ui-pickers": "1.0.0-rc.9",
    71.       "mdbreact": "^4.13.0",
    72.       "moment": "^2.24.0",
    73.       "mongodb": "^2.2.33",
    74.       "mongoose": "^5.5.7",
    75.       "morgan": "^1.9.1",
    76.       "mui-datatables": "2.0.0-beta-32",
    77.       "pdfmake": "^0.1.56",
    78.       "pusher": "^2.2.0",
    79.       "rc-queue-anim": "^1.6.10",
    80.       "react": "^16.8.6",
    81.       "react-addons-update": "15.6.2",
    82.       "react-autosuggest": "^9.4.3",
    83.       "react-beautiful-dnd": "^10.0.3",
    84.       "react-big-calendar": "^0.19.0",
    85.       "react-bootstrap-sweetalert": "^4.4.1",
    86.       "react-chartjs-2": "^2.7.4",
    87.       "react-content-loader": "^3.4.2",
    88.       "react-countup": "^4.0.0",
    89.       "react-credit-cards": "^0.7.0",
    90.       "react-cropper": "^1.0.1",
    91.       "react-custom-scrollbars": "^4.2.1",
    92.       "react-d3-speedometer": "^0.4.2",
    93.       "react-dnd": "^7.0.2",
    94.       "react-dnd-html5-backend": "^7.0.2",
    95.       "react-dom": "^16.8.6",
    96.       "react-draft-wysiwyg": "^1.13.1",
    97.       "react-dragula": "1.1.17",
    98.       "react-dropdown-select": "^3.0.0",
    99.       "react-dropzone-component": "^3.2.0",
    100.       "react-helmet": "^5.2.0",
    101.       "react-hot-loader": "^4.6.5",
    102.       "react-instantsearch": "^5.3.2",
    103.       "react-intl": "^2.8.0",
    104.       "react-joyride": "^1.11.4",
    105.       "react-jvectormap": "0.0.12",
    106.       "react-leaflet": "^2.2.0",
    107.       "react-loadable": "^5.5.0",
    108.       "react-moment": "^0.9.2",
    109.       "react-notifications": "^1.4.3",
    110.       "react-number-format": "^4.0.6",
    111.       "react-quill": "^1.3.3",
    112.       "react-redux": "^6.0.0",
    113.       "react-router-dom": "^4.3.1",
    114.       "react-scripts": "3.0.1",
    115.       "react-select": "^2.3.0",
    116.       "react-sidebar": "^3.0.2",
    117.       "react-slick": "^0.23.2",
    118.       "react-star-rating-component": "^1.4.1",
    119.       "react-swipeable-views": "^0.13.1",
    120.       "react-text-mask": "^5.4.3",
    121.       "react-toggle-switch": "^3.0.4",
    122.       "react-tooltip": "^3.9.2",
    123.       "react-twitter-widgets": "^1.7.1",
    124.       "reactstrap": "^7.1.0",
    125.       "recharts": "^1.4.2",
    126.       "redux": "^4.0.1",
    127.       "redux-saga": "^1.0.1",
    128.       "redux-thunk": "^2.3.0",
    129.       "screenfull": "^4.0.0",
    130.       "slick-carousel": "^1.8.1",
    131.       "socket.io": "^2.2.0",
    132.       "socket.io-client": "^2.2.0",
    133.       "uniqid": "^5.0.3",
    134.       "video-react": "^0.13.2",
    135.       "weather-icons": "^1.3.2"
    136.    },
    137.    "eslintConfig": {
    138.       "extends": "react-app"
    139.    },
    140.    "browserslist": {
    141.       "production": [
    142.          ">0.2%",
    143.          "not dead",
    144.          "not op_mini all"
    145.       ],
    146.       "development": [
    147.          "last 1 chrome version",
    148.          "last 1 firefox version",
    149.          "last 1 safari version"
    150.       ]
    151.    },
    152.    "proxy": "http://localhost:3001"
    153. }
    154.  
    155.  
    Besten Dank für jede Hilfe

  2. #2
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    3.988
    ngb:news Artikel
    1

    Re: Docker & Heroku

    Hab selber nur Grundlagenkenntnisse, aber bei den beiden Copy Befehlen scheinst du mir zweimal den aktuellen Standort der Dateien zu verwenden, also gar nichts zu kopieren.
    Hast du mal geschaut, ob deine packages.json tatsächlich kopiert werden und npm install auch das tut was es soll?

  3. #3
    Mitglied

    (Threadstarter)


    Registriert seit
    Nov 2015
    Ort
    Schweiz
    Beiträge
    42

    Re: Docker & Heroku

    Besten Dank für die Antwort. Ja die Package.json wird kopiert, npm install & npm audit fix wird ebenfalls durchlaufen. Beim Start happerts jedoch leider.

  4. #4
    Lone Gunman Avatar von Shodan
    Registriert seit
    Jul 2013
    Ort
    Citadel Station
    Beiträge
    455

    Re: Docker & Heroku

    "models/CustomDates" klingt wie selbst geschriebener Code. Das ist nicht aus einem Node_Module, oder?


    Deine Dockerfile überrascht mich etwas:
    Code (JavaScript):
    1.  
    2. WORKDIR /usr/src/app
    3. COPY package*.json ./
    4. COPY . .
    und dann per Dockerignore alles ausschließen, was nicht kopiert werden soll?

    Was steht in der dockerignore genau drin? Eventuell schließt die ja das "models" Verzeichnis aus.
    Art. 6 der Richtlinie 2006/24 ist mit den Art. 7 und 52 Abs. 1 der Charta der Grundrechte der Europäischen Union unvereinbar, soweit er den Mitgliedstaaten vorschreibt, sicherzustellen, dass die in ihrem Art. 5 genannten Daten für die Dauer von bis zu zwei Jahren auf Vorrat gespeichert werden.
    Generalanwalt Pedro Cruz Villalón - Europäischer Gerichtshof

  5. #5
    Mitglied

    (Threadstarter)


    Registriert seit
    Nov 2015
    Ort
    Schweiz
    Beiträge
    42

    Re: Docker & Heroku

    Richtig, das ist nicht in Node_Modules drin.
    Beim Dockerfile ist das zweite COPY . . --> Bundle app source

    .dockerignore:
    node_modules
    npm-debug.log

    Der Node_Modules Ordner wird ja nicht gecacht - deshalb soll es normal installiert & gecacht werden und nicht direkt mit gepackt.
    Weiteres wird nicht ausgeschlossen.

    ###
    Ich konnte es beheben. Ich habe das Webpack nicht mehr im Dev Mode sondern im Build Mode in Docker gepackt und npm install / npm audit fix neu ausgeführt
    Geändert von freekiller (14.06.19 um 16:01 Uhr)

  6. #6
    Zeitreisender

    Administrator

    Avatar von drfuture
    Registriert seit
    Jul 2013
    Ort
    in der Zukunft
    Beiträge
    5.869
    ngb:news Artikel
    16

    Re: Docker & Heroku

    Bitte daran denken den Container wie einen Server zu pflegen, das heißt libs, Anwendungen, Frameworks aktuell halten und Rechte durchdenken
    |_|D *`~{ Ich kenne deine Zukunft }~´* |_|D

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •