为什么 meteor 没有安装在我的 docker 容器中?
Why is meteor not installed inside my docker container?
我最近将我的流星应用切换为使用 Docker,因为我正在尝试创建一个新的微服务。以前,我会使用 meteor 运行 在本地部署我的应用程序,但我已经切换到 docker-compose up --build
,在我的项目的根目录中使用 docker-compose.yml
,在我的 Meteor 中使用 Dockerfile
应用程序的目录。我终于得到了 运行ning 的东西,这很棒,但我现在正在尝试构建一个开发版本,但 运行ning 遇到了一些麻烦。
在我的 Dockerfile.dev
我是:
- 设置节点版本
- 声明 Meteor 版本和我的应用程序的代码目录
- 为容器创建一个
/src
目录
- 安装流星
- 正在将
package*.json
个文件复制到 /src
- 通过
npm install
安装 npm 包
- 正在将我的应用程序的源代码复制到
/src
- 正在将工作目录设置为
/src
- 最后,运行将应用程序与
meteor run
docker文件正在 运行 应用程序,但随后我的应用程序退出,因为它找不到流星。这很奇怪,因为它不应该 必须 找到流星来首先启动应用程序吗?无论如何,我迷路了,任何帮助将不胜感激。提前致谢:)
docker-compose.yml
version: '3'
services:
myapp:
build:
context: ./js/myapp
dockerfile: Dockerfile.dev
ports:
- '3000:3000'
links:
- mongo
environment:
ROOT_URL: ${APP_ROOT_URL:-http://localhost}
MONGO_URL: mongodb://mongo:27017/meteor
PORT: 3000
mongo:
image: mongo:latest
command:
- --storageEngine=wiredTiger
volumes:
- data:/data/db
volumes:
data:
Dockerfile.dev
# Inspired by: https://github.com/banjerluke/meteor-dockerfile
FROM node:14.17.5 as builder
ENV METEOR_VERSION=2.3.4 \
APP_SRC_FOLDER=.
RUN mkdir -p /opt/src
RUN echo "\n[*] Installing Meteor ${METEOR_VERSION} to ${HOME}"\
&& curl -s https://install.meteor.com/?release=${METEOR_VERSION} | sed s/--progress-bar/-sL/g | sh
FROM node:14.17.5-alpine as runner
ENV NODE_ENV=dev
COPY $APP_SRC_FOLDER/package*.json /opt/src/
RUN echo '\n[*] Installing Meteor server NPM dependencies' \
&& cd /opt/src \
&& npm install
COPY $APP_SRC_FOLDER /opt/src/
WORKDIR /opt/src/
CMD ["meteor", "run"]
错误
myapp_1 | internal/modules/cjs/loader.js:892
myapp_1 | throw err;
myapp_1 | ^
myapp_1 |
myapp_1 | Error: Cannot find module '/opt/src/meteor'
myapp_1 | at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
myapp_1 | at Function.Module._load (internal/modules/cjs/loader.js:745:27)
myapp_1 | at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
myapp_1 | at internal/main/run_main_module.js:17:47 {
myapp_1 | code: 'MODULE_NOT_FOUND',
myapp_1 | requireStack: []
myapp_1 | }
myapp_myapp_1 exited with code 1
我认为问题出在 FROM node:14.17.5-alpine as runner
出于某种原因,这张图片导致了启动问题。删除它是罪魁祸首!我成功获取了应用程序 运行!
该应用程序的启动确实比 meteor run
慢,但现在我会接受它:)
我最近将我的流星应用切换为使用 Docker,因为我正在尝试创建一个新的微服务。以前,我会使用 meteor 运行 在本地部署我的应用程序,但我已经切换到 docker-compose up --build
,在我的项目的根目录中使用 docker-compose.yml
,在我的 Meteor 中使用 Dockerfile
应用程序的目录。我终于得到了 运行ning 的东西,这很棒,但我现在正在尝试构建一个开发版本,但 运行ning 遇到了一些麻烦。
在我的 Dockerfile.dev
我是:
- 设置节点版本
- 声明 Meteor 版本和我的应用程序的代码目录
- 为容器创建一个
/src
目录 - 安装流星
- 正在将
package*.json
个文件复制到/src
- 通过
npm install
安装 npm 包
- 正在将我的应用程序的源代码复制到
/src
- 正在将工作目录设置为
/src
- 最后,运行将应用程序与
meteor run
docker文件正在 运行 应用程序,但随后我的应用程序退出,因为它找不到流星。这很奇怪,因为它不应该 必须 找到流星来首先启动应用程序吗?无论如何,我迷路了,任何帮助将不胜感激。提前致谢:)
docker-compose.yml
version: '3'
services:
myapp:
build:
context: ./js/myapp
dockerfile: Dockerfile.dev
ports:
- '3000:3000'
links:
- mongo
environment:
ROOT_URL: ${APP_ROOT_URL:-http://localhost}
MONGO_URL: mongodb://mongo:27017/meteor
PORT: 3000
mongo:
image: mongo:latest
command:
- --storageEngine=wiredTiger
volumes:
- data:/data/db
volumes:
data:
Dockerfile.dev
# Inspired by: https://github.com/banjerluke/meteor-dockerfile
FROM node:14.17.5 as builder
ENV METEOR_VERSION=2.3.4 \
APP_SRC_FOLDER=.
RUN mkdir -p /opt/src
RUN echo "\n[*] Installing Meteor ${METEOR_VERSION} to ${HOME}"\
&& curl -s https://install.meteor.com/?release=${METEOR_VERSION} | sed s/--progress-bar/-sL/g | sh
FROM node:14.17.5-alpine as runner
ENV NODE_ENV=dev
COPY $APP_SRC_FOLDER/package*.json /opt/src/
RUN echo '\n[*] Installing Meteor server NPM dependencies' \
&& cd /opt/src \
&& npm install
COPY $APP_SRC_FOLDER /opt/src/
WORKDIR /opt/src/
CMD ["meteor", "run"]
错误
myapp_1 | internal/modules/cjs/loader.js:892
myapp_1 | throw err;
myapp_1 | ^
myapp_1 |
myapp_1 | Error: Cannot find module '/opt/src/meteor'
myapp_1 | at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
myapp_1 | at Function.Module._load (internal/modules/cjs/loader.js:745:27)
myapp_1 | at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
myapp_1 | at internal/main/run_main_module.js:17:47 {
myapp_1 | code: 'MODULE_NOT_FOUND',
myapp_1 | requireStack: []
myapp_1 | }
myapp_myapp_1 exited with code 1
我认为问题出在 FROM node:14.17.5-alpine as runner
出于某种原因,这张图片导致了启动问题。删除它是罪魁祸首!我成功获取了应用程序 运行!
该应用程序的启动确实比 meteor run
慢,但现在我会接受它:)