Erstellt Docker-Image, das Perl-Skript ausführen wird, das Knotenserver mit dem Befehl pm2 intern auslöst.So führen Sie Docker-Images (Nodejs-Server) ohne Beenden aus
Bild unter Verwendung erstellt dockerfile
FROM rm/node:4.0
EXPOSE 3000
EXPOSE 3030
EXPOSE 7030
WORKDIR /Reader_Manager/SISPlatform
CMD perl build_scripts/devdeploy.pl
Wenn ich Bild im Hintergrund ausgeführt werden unter Verwendung des Befehls es das Skript ausgeführt wird. aber nachdem das Skript abgeschlossen ist, wird es beendet.
[[email protected] docker_test]$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
rm/node 8.0 716f9b91b9f2 23 minutes ago 1.376 GB
rm/node 7.0 805fced7c1c8 3 hours ago 1.376 GB
rm/node 6.0 4b0746c90363 3 hours ago 1.376 GB
rm/node 5.0 912588196f44 7 hours ago 1.376 GB
rm/node 4.0 22d40a764333 3 days ago 1.376 GB
rm/node 3.0 dc344c502819 3 days ago 999.1 MB
rm/node 2.0 bee03055f04c 3 days ago 824.7 MB
rm/node 1.0 b9fa60c9f544 3 days ago 488.8 MB
docker.io/centos latest a65193109361 3 days ago 196.7 MB
[[email protected] docker_test]$ docker run -d rm/node:8.0
a2d1780ce3dcf102fd2a0eb4d6632f6934f8c0a5362e0312b117e8da77c1c242
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
[[email protected] docker_test]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a2d1780ce3dc rm/node:8.0 "/bin/sh -c 'perl bui" 8 seconds ago Up 7 seconds 3000/tcp, 3030/tcp, 7030/tcp goofy_brattain
Sie können oben sehen, es lief und ausgesetzt zu 3 Ports. Aber es endet, nachdem das Perl-Skript beendet ist.
[[email protected] docker_test]$ docker ps -a |head -2
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a2d1780ce3dc rm/node:8.0 "/bin/sh -c 'perl bui" 9 minutes ago Exited (0) 8 minutes ago goofy_brattain
Im Folgenden sind Ausgabe von Containern Protokollen
[[email protected] docker_test]$ docker logs a2d1780ce3dc |tail -25
[PM2][WARN] No process found
npm WARN package.json Dependency 'chai' exists in both dependencies and devDependencies, using '[email protected]^3.5.0' from dependencies
npm WARN package.json Dependency 'nodemon' exists in both dependencies and devDependencies, using '[email protected]^1.8.1' from dependencies
npm WARN cannot run in wd [email protected] node postinstall.js (wd=/Reader_Manager/SISPlatform/Auth)
npm WARN package.json [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data
npm WARN package.json Dependency 'underscore' exists in both dependencies and devDependencies, using '[email protected]^1.8.3' from dependencies
npm WARN package.json [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data
┌─────────────┬────┬──────┬─────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├─────────────┼────┼──────┼─────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ AuthServer │ 0 │ fork │ 74 │ online │ 0 │ 2s │ 63.191 MB │ disabled │
│ SISRMServer │ 1 │ fork │ 107 │ online │ 0 │ 1s │ 63.355 MB │ disabled │
│ SEOSServer │ 2 │ fork │ 138 │ online │ 0 │ 0s │ 13.957 MB │ disabled │
└─────────────┴────┴──────┴─────┴────────┴─────────┴────────┴─────────────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
[Output] - Successfully executed 'npm run-script dev-server-linux' inside '/Reader_Manager/SISPlatform/SEOS-TSMWrapper'
[Output] - Current working directory is /Reader_Manager/SISPlatform
[Output] - Checking the errors in the logs '/Reader_Manager/SISPlatform/logs/pm2/err'
[Output] - No error in the log '/Reader_Manager/SISPlatform/logs/pm2/err/auth_error-0.log'
[Output] - No error in the log '/Reader_Manager/SISPlatform/logs/pm2/err/seos_error-2.log'
[Output] - No error in the log '/Reader_Manager/SISPlatform/logs/pm2/err/sisrm_error-1.log'
PM2 hat eine '--no-daemon' Option, die dieses Problem beheben würde, sondern im Idealfall würden Sie jeden Dienst in einem separaten Behälter einzusetzen und nicht PM2 überhaupt verwenden (Docker Griffe nativ mit' --restart Neustart = immer "). – jgillich