节点JSdocker文件不正确的版本

我有一个简单的泊坞窗文件,拉节点图像,并创build一个容器,我们运行我们的应用程序。 请在我们的docker文件的第一行下面find。

FROM node:8 Other docker file commands to follow. 

当我在容器中运行node --version command ,它显示版本为9.2.0,它是最新的节点版本。

我们的主机是运行Ubuntu的EC2

 uname -a Linux ip.1.2.3.4-aws #50-Ubuntu SMP Wed Nov 15 22:18:17 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 

我们的Docker文件

 FROM node:8.9.3 FROM keymetrics/pm2:latest # Create app directory RUN mkdir -p /usr/app/test/src # Install app dependencies COPY ./package.json /usr/app/test/ WORKDIR /usr/app/test RUN npm install # Move source files to the containter COPY ./src/ /usr/app/test/src/ WORKDIR /usr/app/test/src RUN pm2 install pm2-logrotate RUN pm2 set pm2-logrotate:compress true RUN pm2 set pm2-logrotate:retain 2 ARG NODE=production ENV NODE_ENV ${NODE} EXPOSE 443 #CMD [ "npm", "start" ] CMD [ "pm2-docker", "start", "pm2.json" ] 

我们从shell脚本内部构build映像,命令和输出如下

  sudo docker build -t $CLIENT_APP_TAG --no-cache --label $APP_LABEL_NAME -f ./$CLIENT_APP_DOCLER_FILE . sudo docker build -t $SERVER_APP_TAG --no-cache --label $APP_LABEL_NAME -f ./$SERVER_APP_DOCLER_FILE . docker run -dit --name "$CLIENT_APP_NAME"_"$APP_VERSION" -p $CLIENT_HOST_PORT:$CLIENT_CONTAINER_PORT $CLIENT_APP_TAG docker run -dit --name "$SERVER_APP_NAME"_"$APP_VERSION" -p $SERVER_HOST_PORT:$SERVER_CONTAINER_PORT $SERVER_APP_TAG ************************************************************************************************************************** * Building new Image for Server application. * ************************************************************************************************************************** Sending build context to Docker daemon 917kB Step 1/18 : FROM node:8.9.3 ---> f9e6e2b63af8 Step 2/18 : FROM keymetrics/pm2:latest ---> ecf82a5539fe Step 3/18 : RUN mkdir -p /usr/app/test/src ---> Running in 12073977da7d ---> 260d59357d50 Removing intermediate container 12073977da7d Step 4/18 : COPY ./package.json /usr/app/test/ ---> 3c2ec0416378 Removing intermediate container 19e1cee36801 Step 5/18 : WORKDIR /usr/app/test ---> 2d2ef31590b8 Removing intermediate container 7319b8128a8d Step 6/18 : RUN npm install ---> Running in 9cd9e93ca594 npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN TestAppServer@0.0.1 No license field. added 241 packages in 5.499s ---> b61b4b2182a6 Removing intermediate container 9cd9e93ca594 Step 7/18 : COPY ./src/ /usr/app/test/src/ ---> 64a084bff28d Removing intermediate container 0f332e0cab6c Step 8/18 : WORKDIR /usr/app/test/src ---> d100f96f698a Removing intermediate container 22fcf501f912 Step 9/18 : RUN mkdir -p /usr/app/test/logs ---> Running in 5cd102966889 ---> 305d47b02bdc Removing intermediate container 5cd102966889 Step 10/18 : RUN chmod 744 -R /usr/app/test/* ---> Running in 2bdb90b9ed35 ---> 443be2f95f26 Removing intermediate container 2bdb90b9ed35 Step 11/18 : RUN pm2 install pm2-logrotate ---> Running in 10f9de92d7bb ------------- __/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____ _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___ _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__ _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___ _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____ _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________ _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________ _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_ _\///______________\///______________\///__\///////////////__ Community Edition Production Process Manager for Node.js applications with a built-in Load Balancer. Start and Daemonize any application: $ pm2 start app.js Load Balance 4 instances of api.js: $ pm2 start api.js -i 4 Monitor in production: $ pm2 monitor Make pm2 auto-boot at server restart: $ pm2 startup To go further checkout: http://pm2.io/ ------------- [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2][Module] Installing module pm2-logrotate [PM2][Module] Calling [YARN] to install pm2-logrotate ... yarn add v1.3.2 info No lockfile found. [1/4] Resolving packages... [2/4] Fetching packages... info fsevents@1.1.3: The platform "linux" is incompatible with this module. info "fsevents@1.1.3" is an optional dependency and failed compatibility check. Excluding it from installation. [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. success Saved 135 new dependencies. ├─ amp-message@0.1.2 ├─ amp@0.3.1 ├─ ansi-regex@2.1.1 ├─ ansi-styles@2.2.1 ├─ anymatch@1.3.2 ├─ argparse@1.0.9 ├─ arr-diff@2.0.0 ├─ arr-flatten@1.1.0 ├─ array-unique@0.2.1 ├─ async-each@1.0.1 ├─ async-listener@0.6.8 ├─ async@1.5.2 ├─ balanced-match@1.0.0 ├─ binary-extensions@1.11.0 ├─ blessed@0.1.81 ├─ brace-expansion@1.1.8 ├─ braces@1.8.5 ├─ chalk@1.1.3 ├─ charm@0.1.2 ├─ chokidar@1.7.0 ├─ cli-table-redemption@1.0.1 ├─ commander@2.11.0 ├─ concat-map@0.0.1 ├─ continuation-local-storage@3.2.1 ├─ core-util-is@1.0.2 ├─ cron-parser@2.4.3 ├─ cron@1.3.0 ├─ debug@3.1.0 ├─ define-properties@1.1.2 ├─ emitter-listener@1.1.1 ├─ escape-regexp@0.0.1 ├─ escape-string-regexp@1.0.5 ├─ eventemitter2@1.0.5 ├─ expand-brackets@0.1.5 ├─ expand-range@1.8.2 ├─ extend@3.0.1 ├─ extglob@0.3.2 ├─ fclone@1.0.11 ├─ filename-regex@2.0.1 ├─ fill-range@2.2.3 ├─ for-in@1.0.2 ├─ for-own@0.1.5 ├─ foreach@2.0.5 ├─ fs.realpath@1.0.0 ├─ gkt@1.0.0 ├─ glob-base@0.3.0 ├─ glob-parent@2.0.0 ├─ glob@7.1.2 ├─ graceful-fs@4.1.11 ├─ has-ansi@2.0.0 ├─ iconv-lite@0.4.19 ├─ inflight@1.0.6 ├─ inherits@2.0.3 ├─ interpret@1.1.0 ├─ is-binary-path@1.0.1 ├─ is-buffer@1.1.6 ├─ is-dotfile@1.0.3 ├─ is-equal-shallow@0.1.3 ├─ is-extendable@0.1.1 ├─ is-extglob@1.0.0 ├─ is-glob@2.0.1 ├─ is-nan@1.2.1 ├─ is-number@2.1.0 ├─ is-posix-bracket@0.1.1 ├─ is-primitive@2.0.0 ├─ is@3.2.1 ├─ isarray@1.0.0 ├─ isobject@2.1.0 ├─ json-stringify-safe@5.0.1 ├─ kind-of@3.2.2 ├─ lazy@1.0.11 ├─ lodash.findindex@4.6.0 ├─ lodash.isequal@4.5.0 ├─ lodash.merge@4.6.0 ├─ lodash@4.17.4 ├─ long-timeout@0.1.1 ├─ methods@1.1.2 ├─ micromatch@2.3.11 ├─ minimatch@3.0.4 ├─ minimist@0.0.8 ├─ mkdirp@0.5.1 ├─ moment-timezone@0.5.14 ├─ moment@2.19.3 ├─ ms@2.0.0 ├─ mute-stream@0.0.7 ├─ needle@1.6.0 ├─ node-schedule@1.2.5 ├─ normalize-path@2.1.1 ├─ nssocket@0.6.0 ├─ object-keys@1.0.11 ├─ object.omit@2.0.1 ├─ once@1.4.0 ├─ parse-glob@3.0.4 ├─ path-is-absolute@1.0.1 ├─ path-parse@1.0.5 ├─ pidusage@1.2.0 ├─ pm2-axon-rpc@0.5.0 ├─ pm2-axon@3.1.0 ├─ pm2-deploy@0.3.9 ├─ pm2-logrotate@2.4.0 ├─ pm2-multimeter@0.1.2 ├─ pm2@2.8.0 ├─ pmx@1.5.5 ├─ preserve@0.2.0 ├─ process-nextick-args@1.0.7 ├─ promptly@2.2.0 ├─ randomatic@1.1.7 ├─ read@1.0.7 ├─ readable-stream@2.3.3 ├─ readdirp@2.1.0 ├─ rechoir@0.6.2 ├─ regex-cache@0.4.4 ├─ remove-trailing-separator@1.1.0 ├─ repeat-element@1.1.2 ├─ repeat-string@1.6.1 ├─ resolve@1.5.0 ├─ safe-buffer@5.1.1 ├─ semver@5.4.1 ├─ set-immediate-shim@1.0.1 ├─ shelljs@0.7.8 ├─ shimmer@1.2.0 ├─ sorted-array-functions@1.0.0 ├─ source-map-support@0.5.0 ├─ source-map@0.6.1 ├─ sprintf-js@1.1.1 ├─ string_decoder@1.0.3 ├─ strip-ansi@3.0.1 ├─ supports-color@2.0.0 ├─ tv4@1.3.0 ├─ util-deprecate@1.0.2 ├─ uuid@3.1.0 ├─ vizion@0.2.13 ├─ vxx@1.2.2 ├─ wrappy@1.0.2 └─ yamljs@0.3.0 Done in 4.48s. [PM2][Module] Module downloaded [PM2][WARN] Applications pm2-logrotate not running, starting... [PM2] App [pm2-logrotate] launched (1 instances) == pm2-logrotate == ┌────────────────┬─────────────────────┐ │ key │ value │ ├────────────────┼─────────────────────┤ │ max_size │ 10M │ │ retain │ all │ │ compress │ false │ │ dateFormat │ YYYY-MM-DD_HH-mm-ss │ │ workerInterval │ 30 │ │ rotateInterval │ 0 0 * * * │ │ rotateModule │ true │ └────────────────┴─────────────────────┘ [PM2][Module] Module successfully installed and launched [PM2][Module] Edit configuration via: `pm2 conf` ┌──────────┬────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ └──────────┴────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────┴──────────┘ Module activated ┌───────────────┬─────────┬────────────┬────────┬─────────┬─────┬─────────────┬──────┐ │ Module │ version │ target PID │ status │ restart │ cpu │ memory │ user │ ├───────────────┼─────────┼────────────┼────────┼─────────┼─────┼─────────────┼──────┤ │ pm2-logrotate │ N/A │ N/A │ online │ 0 │ 0% │ 22.629 MB │ root │ └───────────────┴─────────┴────────────┴────────┴─────────┴─────┴─────────────┴──────┘ Use `pm2 show <id|name>` to get more details about an app ---> cf75815d40cf Removing intermediate container 10f9de92d7bb Step 12/18 : RUN pm2 set pm2-logrotate:compress true ---> Running in 49bb4d0e6a32 [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2][Module] Starting module pm2-logrotate [PM2][WARN] Applications pm2-logrotate not running, starting... [PM2] App [pm2-logrotate] launched (1 instances) [PM2] Module pm2-logrotate restarted == pm2-logrotate == ┌────────────────┬─────────────────────┐ │ key │ value │ ├────────────────┼─────────────────────┤ │ max_size │ 10M │ │ retain │ all │ │ compress │ true │ │ dateFormat │ YYYY-MM-DD_HH-mm-ss │ │ workerInterval │ 30 │ │ rotateInterval │ 0 0 * * * │ │ rotateModule │ true │ └────────────────┴─────────────────────┘ ---> 4b1ef47bfbf3 Removing intermediate container 49bb4d0e6a32 Step 13/18 : RUN pm2 set pm2-logrotate:retain 2 ---> Running in 922668e67bf8 [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2][Module] Starting module pm2-logrotate [PM2][WARN] Applications pm2-logrotate not running, starting... [PM2] App [pm2-logrotate] launched (1 instances) [PM2] Module pm2-logrotate restarted == pm2-logrotate == ┌────────────────┬─────────────────────┐ │ key │ value │ ├────────────────┼─────────────────────┤ │ max_size │ 10M │ │ retain │ 2 │ │ compress │ true │ │ dateFormat │ YYYY-MM-DD_HH-mm-ss │ │ workerInterval │ 30 │ │ rotateInterval │ 0 0 * * * │ │ rotateModule │ true │ └────────────────┴─────────────────────┘ ---> da9cfb030216 Removing intermediate container 922668e67bf8 Step 14/18 : ARG NODE=production ---> Running in 6adf3b3448c4 ---> 15ac281ba1c4 Removing intermediate container 6adf3b3448c4 Step 15/18 : ENV NODE_ENV ${NODE} ---> Running in cc0f9d075b5d ---> 56a2a3b5a1aa Removing intermediate container cc0f9d075b5d Step 16/18 : EXPOSE 443 ---> Running in 87a5cb112a8b ---> dd76b918243e Removing intermediate container 87a5cb112a8b Step 17/18 : CMD pm2-docker start pm2.json ---> Running in 0776c21be437 ---> ff81b9c101f3 Removing intermediate container 0776c21be437 Step 18/18 : LABEL com.app.Test '' ---> Running in 976599861b1d ---> db2ea4ba5fa2 Removing intermediate container 976599861b1d Successfully built db2ea4ba5fa2 Successfully tagged Test-server:1.6.0 *********Successfully build Image for Server Application*************** ************************************************************************************************************************** * Starting containter for Server application. * ************************************************************************************************************************** 1a972236bf07744abf2a1813a3b00e22b1bb0f8597f88e43588b1fa24ff4f26f *********Server Application Containter started successfully.*************** 

图像生成后,创build容器。

 ubuntu@(DEV):$docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9ff46fa26446 test-client:1.6.0 "httpd-foreground" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp test-client_1.6.0 1a972236bf07 test-server:1.6.0 "pm2-docker start ..." 6 minutes ago Up 6 minutes 80/tcp, 43554/tcp, 0.0.0.0:9443->443/tcp test-server_1.6.0 ubuntu@(DEV):$ docker exec -it 1a972236bf07 sh /usr/app/test/server/src # node --version v9.2.1 /usr/app/test/server/src # 

嗯 – 适用于我:

 ➜ ~ docker run node:8 node --version v8.9.3 

我认为这是两件事情之一:

  1. Dockerfile东西是升级节点
  2. 你没有在容器中运行node --version ,而是错误地在你的本地机器上运行它。

要么仔细检查你做的是正确的事情,并使用上面的命令,因为我有 – 或张贴完整的Dockerfile,让我们看看发生了什么事情。

这是来自最有可能的第二个,dockerfile中的重复FROMs或多或less被认为是一个错误,而不是Docker的一个特性,虽然它看起来像计划保留,因为它有一些有限的用例:

多个FROM – 意味着什么

keymetrics / pm2:最新可能在节点v8.9.3上

感谢您的澄清。 你是正确的,它是安装最新版本的Node JS的第二个。 我删除了另一个,并将其更改为

 FROM keymetrics/pm2:8 

现在一切都很好