Docker:MeteorJS安装了两次,但有一些警告

时间:2017-09-29 14:37:08

标签: ubuntu docker meteor dockerfile

我正在使用ubuntu:latest图像来创建meteorJS泊坞窗图像。 问题是,流星被下载了两次,我确实收到了一些package.json的警告。

Dockerfile

FROM ubuntu:latest

# build arguments
ARG APP_PACKAGES
ARG APP_LOCALE=en_US
ARG APP_CHARSET=UTF-8
ARG APP_USER=app
ARG APP_USER_DIR=/home/${APP_USER}

# set the locale (required by Meteor)
RUN locale-gen ${APP_LOCALE}
RUN localedef ${APP_LOCALE}.${APP_CHARSET} -i ${APP_LOCALE} -f ${APP_CHARSET}

# create a non-root user that can write to /usr/local (required by Meteor)
RUN useradd -mUd ${APP_USER_DIR} ${APP_USER}
RUN chown -Rh ${APP_USER} /usr/local
USER ${APP_USER}

# MeteorJS
RUN curl https://install.meteor.com/ | sh

# NPM packages
WORKDIR '/builds/project/data'
RUN meteor npm install gridfs-stream gm fluent-ffmpeg

最后一部分(RUN meteor ...)给了我这个:

This is your first time using Meteor!
Installing a Meteor distribution in your home directory.
Downloading Meteor distribution

所以meteor下载了两次:

  1. curl ...
  2. meteor npm install ...
  3. 我也收到了这个警告:

    npm WARN enoent ENOENT: no such file or directory, open '/builds/project/data/package.json'
    npm WARN media No description
    npm WARN media No repository field.
    npm WARN media No README data
    npm WARN media No license field.
    

    为什么要有一个package.json,虽然我不使用--save

1 个答案:

答案 0 :(得分:2)

您的问题是您正在更改导致权限问题的Dockerfile之间的用户。 dockerfile下面对我很有用

FROM ubuntu:latest
RUN apt update && apt install -y curl
# build arguments
ARG APP_PACKAGES
ARG APP_LOCALE=en_US
ARG APP_CHARSET=UTF-8
ARG APP_USER=app
ARG APP_USER_DIR=/home/${APP_USER}

# set the locale (required by Meteor)
#RUN locale-gen ${APP_LOCALE}
#RUN localedef ${APP_LOCALE}.${APP_CHARSET} -i ${APP_LOCALE} -f ${APP_CHARSET}

# create a non-root user that can write to /usr/local (required by Meteor)
RUN useradd -mUd ${APP_USER_DIR} ${APP_USER}
RUN chown -Rh ${APP_USER} /usr/local
USER ${APP_USER}

# MeteorJS
RUN curl https://install.meteor.com/ | sh

# NPM packages
RUN mkdir -p /usr/local/builds/project/data
WORKDIR '/usr/local/builds/project/data'
RUN meteor npm install gridfs-stream gm fluent-ffmpeg

我做的两个主要变化是

RUN mkdir -p /usr/local/builds/project/data
WORKDIR '/usr/local/builds/project/data'

您想要创建自己的目录,而不是让WORKDIR创建它。您创建的目录将具有属于您的用户的权限。但如果目录不存在,那么您使用WORKDIR并创建目录,然后它就没有正确的权限。

接下来因为您切换了用户,您无权再在root用户中创建/builds/project/data。但你拥有/usr/local/所以你应该将其作为起始路径。您看到的npm警告也没问题,如果package.json不存在并且您正在尝试安装本地模块,它将始终发出警告。所以只要它说WARN

就可以忽略它
相关问题