GithubHelp home page GithubHelp logo

jshimko / meteor-launchpad Goto Github PK

View Code? Open in Web Editor NEW
275.0 275.0 152.0 101 KB

A base Docker image for Meteor applications.

Home Page: https://hub.docker.com/r/jshimko/meteor-launchpad/

License: MIT License

Shell 71.38% Dockerfile 28.62%
docker meteor meteor-launchpad mongo

meteor-launchpad's People

Contributors

cunneen avatar gustawdaniel avatar gustawdaniel-acaisoft avatar jshimko avatar khaledfarah avatar mnsigner avatar sebakerckhof avatar wernight avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meteor-launchpad's Issues

Node version

Can I specify which node version to install when building a Docker image with yours as a base? And is there a reason to why you are using v4 and not v6, which is the latest LTS version?

Great work btw!

not found: git

If package.json contains dependencies that pull from github, the install will fail:

npm ERR! git clone --template=/root/.meteor/packages/meteor-tool/1.4.2_3/mt-os.linux.x86_64/dev_bundle/.npm/_git-remotes/_templates --mirror [email protected]:adcpm/steem.git /root/.meteor/packages/meteor-tool/1.4.2_3/mt-os.linux.x86_64/dev_bundle/.npm/_git-remotes/git-github-com-adcpm-steem-git-dev-82fc4f60: undefined
npm ERR! git clone --template=/root/.meteor/packages/meteor-tool/1.4.2_3/mt-os.linux.x86_64/dev_bundle/.npm/_git-remotes/_templates --mirror [email protected]:adcpm/steem.git /root/.meteor/packages/meteor-tool/1.4.2_3/mt-os.linux.x86_64/dev_bundle/.npm/_git-remotes/git-github-com-adcpm-steem-git-dev-82fc4f60: undefined
npm ERR! Linux 4.4.31-1-lts
npm ERR! argv "/root/.meteor/packages/meteor-tool/.1.4.2_3.17tso1e++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/bin/node" "/root/.meteor/packages/meteor-tool/1.4.2_3/mt-os.linux.x86_64/dev_bundle/bin/npm" "install"
npm ERR! node v4.6.2
npm ERR! npm  v3.10.9
npm ERR! code ENOGIT

npm ERR! not found: git
npm ERR! 
npm ERR! Failed using git.
npm ERR! This is most likely not a problem with npm itself.
npm ERR! Please check if you have git installed and in your PATH.

npm ERR! Please include the following file with any support request:
npm ERR!     /opt/meteor/src/npm-debug.log

reading of the launchpad.conf file

First, big thanks for the image.
I noticed that your latest modifications of the image impact on the reading of the launchpad.conf file. Indeed, when I run a container using the latest image I get a mongoDB URL error ( although I've set INSTALL_MONGO=true in the launchpad.conf file), when I use the previous version of the image (v1.2.0) everything is OK.

Thanks again.

Implement version tagging on Docker builds

The only reason this doesn't already exist is because the :latest tag always depends on the :base tag. If I version one, I need to version the other as well. And that means having to dynamically change the FROM directive in the :latest Dockerfile at build time. That shouldn't be a problem if I use something like sed when it builds on CircleCI. That just means I'll have to build twice. Once for the versioned set of images and once more for the :latest.

That's what automation is for though. :)

I'll get this knocked out this week.

meteor 1.5 eisdir error

with meteor 1.5 I get this error. also see nodejs/node#6861

/root/.meteor/packages/meteor-tool/.1.5.0.utbu0o++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/meteor-promise/promise_server.js:218     
      throw error;                                                                                                                                                                
      ^                                                                                                                                                                           
                                                                                                                                                                                  
Error: EISDIR: illegal operation on a directory, unlink '/opt/meteor/src/.meteor/local/dev_bundle'                                                                                
    at Error (native)                                                                                                                                                             
    at Object.fs.unlinkSync (fs.js:932:18)                                                                                                                                        
    at exports.makeLink (/tools/cli/dev-bundle-links.js:20:8)                                                                                                                     
    at [object Object]._.extend.ensureDevBundleLink (/tools/project-context.js:1476:7)                                                                                            
    at [object Object]._.extend._readFile (/tools/project-context.js:1410:10)                                                                                                     
    at new exports.ReleaseFile (/tools/project-context.js:1360:8)                                                                                                                 
    at /tools/cli/main.js:898:22                                                                                                                                                  

Docker mount issue with latest meteor-launchpad:devbuild

I don't have a the exact Dockerfile i used to create the error trace below.
However, I experienced several unsuccessful attempts at building with the latest
jshimko/meteor-launchpad:devbuild in docker hub. At first glance it appears to be a deep Docker issue. I suspect it might be a bad path somewhere in docker or build code.

I do really appreciate this project, I have come to understand how hard it is to create a container for meteor.

node-v4.8.3-linux-x64/lib/node_modules/npm/node_modules/umask/README.md
node-v4.8.3-linux-x64/lib/node_modules/npm/node_modules/umask/.npmignore
Step 1/1 : RUN bash $BUILD_SCRIPTS_DIR/install-meteor.sh
 ---> Running in 466bd047eeee

[-] Installing the latest version of Meteor...

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7782    0  7782    0     0  25288      0 --:--:-- --:--:-- --:--:-- 25348
Downloading Meteor distribution

Meteor 1.5 has been installed in your home directory (~/.meteor).
Writing a launcher script to /usr/local/bin/meteor for your convenience.

To get started fast:

  $ meteor create ~/my_cool_app
  $ cd ~/my_cool_app
  $ meteor

Or see the docs at:

  docs.meteor.com

Step 1/1 : COPY . $APP_SOURCE_DIR
ERROR: Service 'miso3' failed to build: Error processing tar file(exit status 1): Error setting up pivot dir: mkdir /var/lib/docker/aufs/mnt/6848c3101ac84d6f2270459d5a36da23d8a347918fbd7cdf497df27a765ca474/opt/meteor/src/.pivot_root090992472: not a directory
Kriss-MacBook-Pro:miso3 kris$

Caching

The build process is lasting very long and I´m wondering why nothing is getting cached. I´m currently using the dev image of meteor-launchpad.

ONBUILD RUN cd $APP_SOURCE_DIR &&
$BUILD_SCRIPTS_DIR/install-deps.sh &&
$BUILD_SCRIPTS_DIR/install-node.sh &&
$BUILD_SCRIPTS_DIR/install-phantom.sh &&
$BUILD_SCRIPTS_DIR/install-graphicsmagick.sh &&
$BUILD_SCRIPTS_DIR/install-mongo.sh &&
$BUILD_SCRIPTS_DIR/install-meteor.sh &&
$BUILD_SCRIPTS_DIR/build-meteor.sh &&
$BUILD_SCRIPTS_DIR/post-build-cleanup.sh

Why does that run everytime again, and can´t that be modified to make caching possible?

It´s possible to cache NPM by doing the installation of the packages outside from the project and copy the contents into the project afterwards


ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /opt/app && cp -a /tmp/node_modules /opt/app/

Are there any reasons for not doing that in Meteor projects?

Another problem is that I install the Android SDK afterwards and it seems that doesn´t get cached either which is really a headache as it has multiple GB.

If I understood Docker correctly, child layers need to be rebuild as soon as the parent changes.

What would be the best solution in that case? I thought about modifying meteor-launchpad and make the android docker image the base image of meteor-launchpad.

Another attempt would be caching meteor-launchpad build completely and prevent layers from changing at all, but I guess this isn´t possible because as soon as files of my application change, I need to rebuild the Meteor application anyway which leads to a rebuild of all layers again.

Do you have any advice?

Add TOOL_NODE_FLAGS setting

We're running into an issue with the build process running out of memory, as described here: meteor/meteor#8157

The fix appears to set an ENV

TOOL_NODE_FLAGS="--max-old-space-size=4096 --optimize_for_size --gc-interval=100"

Which gets used inside Meteor's node build command.

It would be helpful if there was an option to set this in meteor-launchpad.

Avoid runs process/commands as the root user which might not be permitted in OpenShift cluster

When I try run docker container based on meteor-launchpad:v1.1.4 (or previous versions) getting openshift warning/error.

Image apinf/platform:upgrade-meteor-launchpad runs as the root user which might not be permitted by your cluster administrator.

It requires additional setting for the user who runs container, but in reality, in many cases, admin of cluster will not allow run the command as root user.

Keep on getting this error when building within CI pipeline from gitlab and on mac os as well

any idea what i'm doing wrong?

FROM GITLAB-RUNNER HOST

Purging configuration files for wget (1.16-1+deb8u1) ...

Step 1 : RUN bash $BUILD_SCRIPTS_DIR/install-mongo.sh
 ---> Running in b83ec9573d9d
current mongo setting is INSTALL_MONGO = false
Step 1 : RUN cd $APP_SOURCE_DIR &&             bash $BUILD_SCRIPTS_DIR/install-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/build-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/post-build-cleanup.sh
 ---> Running in b0d163991c45
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  7784    0  7784    0     0  15385      0 --:--:-- --:--:-- --:--:-- 15383
sed: -e expression #1, char 29: unterminated `s' command
The command '/bin/sh -c cd $APP_SOURCE_DIR &&             bash $BUILD_SCRIPTS_DIR/install-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/build-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/post-build-cleanup.sh' returned a non-zero code: 1
ERROR: Build failed: exit code 1

FROM MAC OS

 ---> Running in 608aaa13397f
current mongo setting is INSTALL_MONGO = false
Step 1 : RUN cd $APP_SOURCE_DIR &&             bash $BUILD_SCRIPTS_DIR/install-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/build-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/post-build-cleanup.sh
 ---> Running in 7afab25ff5a2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7784    0  7784    0     0  15985      0 --:--:-- --:--:-- --:--:-- 16016
sed: -e expression #1, char 29: unterminated `s' command
The command '/bin/sh -c cd $APP_SOURCE_DIR &&             bash $BUILD_SCRIPTS_DIR/install-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/build-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/post-build-cleanup.sh' returned a non-zero code: 1

meteor 1.2.1 E: The method driver /usr/lib/apt/methods/https could not be found.

RUN cd $APP_SOURCE_DIR && $BUILD_SCRIPTS_DIR/install-deps.sh && $BUILD_SCRIPTS_DIR/install-node.sh && $BUILD_SCRIPTS_DIR/install-phantom.sh && $BUILD_SCRIPTS_DIR/install-graphicsmagick.sh && $BUILD_SCRIPTS_DIR/install-mongo.sh && $BUILD_SCRIPTS_DIR/install-meteor.sh && $BUILD_SCRIPTS_DIR/build-meteor.sh && $BUILD_SCRIPTS_DIR/post-build-cleanup.sh
---> Running in a51f5b01b87f

[-] Installing base OS dependencies...

E: The method driver /usr/lib/apt/methods/https could not be found.
The command '/bin/sh -c cd $APP_SOURCE_DIR && $BUILD_SCRIPTS_DIR/install-deps.sh && $BUILD_SCRIPTS_DIR/install-node.sh && $BUILD_SCRIPTS_DIR/install-phantom.sh && $BUILD_SCRIPTS_DIR/install-graphicsmagick.sh && $BUILD_SCRIPTS_DIR/install-mongo.sh && $BUILD_SCRIPTS_DIR/install-meteor.sh && $BUILD_SCRIPTS_DIR/build-meteor.sh && $BUILD_SCRIPTS_DIR/post-build-cleanup.sh' returned a non-zero code: 100

OS X and iOS build on Linux?

Of note, I do note want to build iOS apps in Linux, that is merely the strange error I get when building, same on dockerhub:

 �[91mCurrently, it is only possible to build iOS apps on an OS X system. �[0m �[91mSupply the server hostname and port in the --server option for mobile app builds. 

Have I done something wrong? I am adapting this to the meteor create --example todos example meteor project. I have only created the Dockerfile and .dockerignore files. Branch here

exited with code 0

I´m trying to get my application running, but it terminates immediately and I cannot find a reason for that.

myapplication | => Starting app on port 3000...
myapplication exited with code 0

docker logs just shows "exited with code 0"

How can I see what is going on within the container?

When go in the containers bash and start the application manually, it tells me it cannot reach the database. However, when I launch another docker container I can reach the database without any problems.


version: "3"
services:
  app:
    image: application:v0.0.3
    container_name: myapplication
    build:
        context: "."
    ports:
      - "80:3000"
    volumes:
      - "/application:/var/lib/application"
    environment:
      - MONGO_URL=mongodb://database:27017/meteor
      - DATA_DIRECTORY=/var/lib/application
      - ROOT_URL=http://localhost
    command: chmod a+rwx -R /var/lib/application

  database:
      image: mongo:3.0
      volumes:
        - "/application/db:/data/db:rw"
      command: mongod --smallfiles --quiet --logpath=/dev/null

networks:
  default:
    external:
      name: service-tier

Build error when add-platform

If add iOS/Android platform, docker image will failed to build

Supply the server hostname and port in the --server option for mobile app builds.

Remove iOS/Android platform could fix this.

Does here has any way to keep it both?

Building Meteor 1.6-beta.2 fails

When trying to build a 1.6-beta.2 application it fails with Node v8.1.2. Might have something to do with npm (1.6 doesn't support npm5 at the moment, but will, what npm version does launchpad select automatically?), but doesn't explain why it cannot download the Meteor distribution...

[-] Installing Meteor 1.6-beta.2...

�[91mDownloading Meteor distribution
�[0m�[91mRetrying download in 5 seconds...
�[0m�[91mRetrying download in 5 seconds...
�[0m�[91mRetrying download in 5 seconds...
�[0m�[91mRetrying download in 5 seconds...
�[0m�[91mRetrying download in 5 seconds...
�[0m�[91mRetrying download in 5 seconds...
�[0m�[91mRetrying download in 5 seconds...
�[0m�[91mRetrying download in 5 seconds...
�[0m�[91mRetrying download in 5 seconds...
�[0m�[91mRetrying download in 5 seconds...
�[0mThe command '/bin/sh -c cd $APP_SOURCE_DIR &&             $BUILD_SCRIPTS_DIR/install-deps.sh &&             $BUILD_SCRIPTS_DIR/install-node.sh &&             $BUILD_SCRIPTS_DIR/install-phantom.sh && 						$BUILD_SCRIPTS_DIR/install-graphicsmagick.sh &&             $BUILD_SCRIPTS_DIR/install-mongo.sh &&             $BUILD_SCRIPTS_DIR/install-meteor.sh &&             $BUILD_SCRIPTS_DIR/build-meteor.sh &&             $BUILD_SCRIPTS_DIR/post-build-cleanup.sh' returned a non-zero code: 1
Build step 'Docker Build and Publish' marked build as failure
Taking single-use slave mesos-jenkins-431ba98af7494ee19510df176157c034 offline.
Finished: FAILURE

PhantomJS installs erroneously

Firstly thanks for your work in maintaining this image!

In the latest version (& with Meteor 1.4.2), and without any .launchpad.conf file, phantomJS nevertheless tries to install and results in the following error:

47 > [email protected] install /opt/meteor/dist/bundle/programs/server/node_modules/fibers > node build.js || nodejs build.js
48`linux-x64-46` exists; testing
49Binary is fine; exiting
50 > [email protected] install /opt/meteor/dist/bundle/programs/server > node npm-rebuild.js
51 > [email protected] install /opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/fsevents > node-pre-gyp install --fallback-to-build
52node-pre-gyp
53 ERR! Tried to download: https://fsevents-binaries.s3-us-west-2.amazonaws.com/v1.0.14/fse-v1.0.14-node-v46-linux-x64.tar.gz
54node-pre-gyp
55ERR!
56Pre-built binaries not found for [email protected] and [email protected] (node-v46 ABI) (falling back to source compile with node-gyp)
57
58make: Entering directory '/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/fsevents/build'
59 SOLINK_MODULE(target) Release/obj.target/.node
60 COPY Release/.node
61make: Leaving directory '/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/fsevents/build'
62 > [email protected] postinstall /opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/sauce-connect-launcher > node scripts/install.js
63 > [email protected] install /opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/phantomjs-prebuilt > node install.js
64PhantomJS not found on PATH
65Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2
66Saving to /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2
67Receiving...
68
69Received 22866K total.
70Extracting tar contents (via spawned process)
71Removing /opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/phantomjs-prebuilt/lib/phantom
72Copying extracted folder /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1477693519804/phantomjs-2.1.1-linux-x86_64 -> /opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/phantomjs-prebuilt/lib/phantom
73Writing location.js file
74Phantom installation failed { [Error: EACCES: permission denied, open '/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/phantomjs-prebuilt/lib/location.js'] errno: -13, code: 'EACCES', syscall: 'open', path: '/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/phantomjs-prebuilt/lib/location.js' } Error: EACCES: permission denied, open '/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/phantomjs-prebuilt/lib/location.js' at Error (native) at Object.fs.openSync (fs.js:549:18) at Object.fs.writeFileSync (fs.js:1156:15) at writeLocationFile (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/phantomjs-prebuilt/lib/util.js:84:6) at Promise._successFn (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/phantomjs-prebuilt/install.js:88:5) at nextTickCallback (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/momentjs_moment/node_modules/kew/kew.js:47:28) at nextTickCallbackWith0Args (node.js:420:9) at process._tickCallback (node.js:349:13)

no such image using compose

hi,

I did not build or do anything yet, just put the dockerfile and the yml file in the project root.
FROM jshimko/meteor-launchpad:devbuild

# docker-compose.yml

app:
  image: qhose/qrsmeteor:version0.1
  ports:
    - "80:3000"
  links:
    - mongo
  environment:
    - ROOT_URL=http://example.com
    - MONGO_URL=mongodb://mongo:27017/meteor

mongo:
  image: mongo:latest --storageEngine=wiredTiger 

I get this error

C:\Github\QRSMeteor (master)
λ docker-compose up -d
ERROR: no such image: mongo:latest+--storageEngine=wiredTiger: invalid reference format

if I do a pull its there: C:\Github\QRSMeteor (master) λ docker pull mongo:latest latest: Pulling from library/mongo Digest: sha256:f1ae736ea5f115822cf6fcef6458839d87bdaea06f40b97934ad913ed348f67d Status: Image is up to date for mongo:latest

Need help on install libpq

Hi @jshimko,

I like the way you can add build options on the launchpad.conf

Is there a way to add this dependencies?

apt-get install libpq-dev

Can this be add on this docker image?

This is regarding mup error deployment failed on libpq and bycript

Can this be used by meteor up? I am having an error using docker image

Started TaskList: Pushing Meteor
[35.161.182.5] - Pushing Meteor App Bundle to The Server
[35.161.182.5] - Pushing Meteor App Bundle to The Server: SUCCESS
[35.161.182.5] - Pushing the Startup Script
[35.161.182.5] - Pushing the Startup Script: SUCCESS

Started TaskList: Configuring  Meteor Environment Variables
[35.161.182.5] - Sending Environment Variables
[35.161.182.5] - Sending Environment Variables: SUCCESS

Started TaskList: Start Meteor
[35.161.182.5] - Start Meteor
[35.161.182.5] x Start Meteor: FAILED
	
	-----------------------------------STDERR-----------------------------------
	Error response from daemon: No such container: UBOApollo-frontend
	docker: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"./entrypoint.sh\\\": stat ./entrypoint.sh: no such file or directory\"\n".
	-----------------------------------STDOUT-----------------------------------
	 exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	d5ef090d63fc: Already exists
	cd3b8f133612: Already exists
	06fc68af5ec4: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	a3ed95caeb02: Already exists
	Digest: sha256:059b6c5648f9e1e0da41fbeb4ad05693e2103dd833b6e8568f23b029c03b94fc
	Status: Image is up to date for jshimko/meteor-launchpad:latest
	d528ad6b0eb7b427639412f2f51791562f23b3a5221b364c21c3350495e9a266
	----------------------------------------------------------------------------

Thanks for your help.

Tar problem while installing meteorjs to docker container

Hello @jshimko

unfortunately there's a tar problem while installing METEORJS to container which randomly works. What I mean is, I've two repositories that one of them is the fork of another. Both are identical. And one of them is being built successfully and the another throws following errors during meteor install:
.meteor/release file: [email protected]

error:

tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-lib/node_modules/npm/node_modules/request/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-lib/node_modules/npm/node_modules/node-gyp/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-lib/node_modules/npm/node_modules/node-gyp/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-lib/node_modules/npm/node_modules/node-gyp: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-lib/node_modules/npm/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-lib/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-fetch/node_modules/cordova-common/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-fetch/node_modules/cordova-common/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-fetch/node_modules/cordova-common: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-fetch/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-fetch/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-fetch: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-create/node_modules/cordova-common/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-create/node_modules/cordova-common/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-create/node_modules/cordova-common: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-create/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-create/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-create: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-common/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-common/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-common: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/browser-launcher2/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/browser-launcher2/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/browser-launcher2: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/babel-plugin-minify-constant-folding/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/babel-plugin-minify-constant-folding/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/babel-plugin-minify-constant-folding: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/astw/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/astw/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/astw: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/meteor-tool/.1.4.4_1.1t9hste++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/bin: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/modules/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/modules/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/modules: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/compileLessBatch/node_modules/less/node_modules/request/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/compileLessBatch/node_modules/less/node_modules/request/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/compileLessBatch/node_modules/less/node_modules/request: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/compileLessBatch/node_modules/less/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/compileLessBatch/node_modules/less/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/compileLessBatch/node_modules/less: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/compileLessBatch/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/compileLessBatch/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/compileLessBatch: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/babel-compiler/node_modules/regjsparser/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/babel-compiler/node_modules/regjsparser/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/babel-compiler/node_modules/regjsparser: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/babel-compiler/node_modules/.bin: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/babel-compiler/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor/babel-compiler: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules/meteor: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm/node_modules: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os/npm: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova/plugin.compileLessBatch.os: Directory renamed before its status could be extracted
tar: .meteor/packages/less/.2.7.9.1b514af++os+web.browser+web.cordova: Directory renamed before its status could be extracted
tar: .meteor/packages/less: Directory renamed before its status could be extracted

Dockerfile contains FROM directive with your base image. Do you have an idea what can be the root cause ?

Maybe it would be a better option to build meteor application instead of installing meteor to docker container to build application, what do you think ?

Thanks in advance

Error: EXDEV: cross-device link not permitted, rename

Thank you for creating this image, I have seen many people recommending it. When I use this image however my build fails, but only when using a local meteor package. It works fine with no local packages, so I am absolutely stumped at what the problem is. I created a dummy meteor app and build the image just fine, then added a dummy package, verified meteor build works, and then it still fails. Following is the full stack trace if it is useful. I do not believe the error is with your image, but I am at my wits end and I appreciate ANY help or suggestions you have.
Thanks in advance!

`
/root/.meteor/packages/ecmascript/.0.5.9.ui3230++os+web.browser+web.cordova/plugin.compile-ecmascript.os/npm/node_modules/meteor/promise/node_modules/meteor-promise/promise_server.js:190
throw error;
^

Error: EXDEV: cross-device link not permitted, rename '/opt/meteor/src/.meteor/local/isopacks/pigknows_conversion-collections' -> '/opt/meteor/src/.meteor/local/isopacks/pigknows_conversion-collections-garbage-p6wxcy'
at Error (native)
at Object.fs.renameSync (fs.js:681:18)
at Object.wrapper [as rename] (/tools/fs/files.js:1531:35)
at Object.files.renameDirAlmostAtomically (/tools/fs/files.js:963:11)
at Builder.complete (/tools/isobuild/builder.js:608:13)
at /tools/isobuild/isopack.js:1679:15
at Isopack.saveToPath (/tools/isobuild/isopack.js:1191:9)
at /tools/isobuild/isopack-cache.js:378:23
at /tools/utils/buildmessage.js:359:18
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:352:34
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:350:23
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at Object.enterJob (/tools/utils/buildmessage.js:324:26)
at IsopackCache.loadLocalPackage (/tools/isobuild/isopack-cache.js:315:18)
at /tools/isobuild/isopack-cache.js:249:16
at Function.time (/tools/tool-env/profile.js:305:10)
at /tools/isobuild/isopack-cache.js:248:17
at /tools/utils/buildmessage.js:359:18
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:352:34
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:350:23
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at Object.enterJob (/tools/utils/buildmessage.js:324:26)
at IsopackCache.ensurePackageLoaded (/tools/isobuild/isopack-cache.js:239:20)
at /tools/isobuild/isopack-cache.js:76:14
at /tools/packaging/package-map.js:57:7
at Function.
.each.
.forEach (/root/.meteor/packages/meteor-tool/.1.4.2.1r0536n++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/underscore/underscore.js:87:22)
at [object Object].eachPackage (/tools/packaging/package-map.js:49:7)
at IsopackCache.buildLocalPackages (/tools/isobuild/isopack-cache.js:75:24)
at /tools/project-context.js:809:25
at /tools/utils/buildmessage.js:359:18
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:352:34
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:350:23
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at Object.enterJob (/tools/utils/buildmessage.js:324:26)
at ProjectContext._buildLocalPackages (/tools/project-context.js:808:18)
at /tools/project-context.js:268:9
at /tools/utils/buildmessage.js:359:18
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:352:34
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:350:23
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at Object.enterJob (/tools/utils/buildmessage.js:324:26)
at ProjectContext._completeStagesThrough (/tools/project-context.js:258:18)
at /tools/project-context.js:250:12
at Function.run (/tools/tool-env/profile.js:490:12)
at ProjectContext.prepareProjectForBuild (/tools/project-context.js:249:13)
at /tools/cli/commands.js:854:20
at /tools/utils/buildmessage.js:271:13
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:264:29
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:262:18
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at /tools/utils/buildmessage.js:253:23
at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
at Object.capture (/tools/utils/buildmessage.js:252:19)
at Object.main.captureAndExit (/tools/cli/main.js:273:29)
at buildCommand (/tools/cli/commands.js:853:8)
at Command.func (/tools/cli/commands.js:802:12)
at /tools/cli/main.js:1454:23
`

Can´t run build.sh on Windows 10

Me again.

I´m trying to create a custom image in order to make meteor-launch not the base layer anymore, because I want to speed up the build process. It seems that it doesn´t work on Windows 10.

This is the log

---> 49b198f9b174
Removing intermediate container d31191409055
Step 15/42 : RUN bash $BUILD_SCRIPTS_DIR/install-deps.sh && bash $BUILD_SCRIPTS_DIR/post-install-cleanup.sh
---> Running in affae9705315
/opt/build_scripts/install-deps.sh: line 2: $'\r': command not found
: invalid optionts/install-deps.sh: line 3: set: -
set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
/opt/build_scripts/install-deps.sh: line 4: $'\r': command not found

[-] Installing base OS dependencies...

/opt/build_scripts/install-deps.sh: line 6: $'\r': command not found
/opt/build_scripts/install-deps.sh: line 8: $'\r': command not found
E: Invalid operation update
/opt/build_scripts/install-deps.sh: line 10: $'\r': command not found
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package apt-transport-https
E: Unable to locate package ca-certificates
/opt/build_scripts/install-deps.sh: line 14: $'\r': command not found
/opt/build_scripts/install-deps.sh: line 46: syntax error: unexpected end of file
The command '/bin/sh -c bash $BUILD_SCRIPTS_DIR/install-deps.sh && bash $BUILD_SCRIPTS_DIR/post-install-cleanup.sh' returned a non-zero code: 2

Is it possible to build that image on Windows somehow?

readFilesync of undefined when building Meteor docker image on Jenkins

Docker Version: 1.6.0
Jenkins Version: 2.19.3

When building our docker image on Jenkins, we get the following error.

[91minfo�[0m�[91m �[0m�[91merror reading version TypeError: Cannot read property 'readFileSync' of undefined
�[0m�[91minfo error reading version at /root/.meteor/packages/meteor-tool/.1.4.1_3.8dq62w++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-lib/node_modules/npm/lib/npm.js:42:24
�[0m�[91minfo error reading version�[0m�[91m at Object. (/root/.meteor/packages/meteor-tool/.1.4.1_3.8dq62w++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/cordova-lib/node_modules/npm/lib/npm.js:475:3)

About oplog

hi i'm not experienced in docker, i wonder should i set oplog inside docker by myself

Custom docker image names not using correct base image

Per the instructions:

# or specify a custom image name
./build.sh myorg/myimage

Does not respect the docker base images inside of dev.dockerfile and prod.dockerfile.

https://github.com/krismeister/meteor-launchpad/blob/master/dev.dockerfile#L1
https://github.com/krismeister/meteor-launchpad/blob/master/prod.dockerfile#L1

Expected result:
prod.dockerfile & dev.dockerfile uses the new custom base image myorg/myimage:base

ps: this was a very tricky issue to find, I built many times before understanding what was happening.

Pull request for using APT_GET_INSTALL not merged

I was trying to use APT_GET_INSTALL in my launchpad.conf because I needed libssl-dev and was wondering why it ignores the command.

It seems that the REAMDE.md is updated and contains explanation of this functionality, but the pull request #40 is still not merged and the functionality is missing.

Besides that the config is not "APT_GET_INSTALL", but "INSTALL_APTGET_PACKAGES"

Bundle support?

I'm coming from https://github.com/meteorhacks/meteord and am not sure if I'm missing something or if this project has no possibility to simply run .tar.gz archives created by meteor build.

If it has sorry for the inconvenience and it would be nice if you could point me to it.
If not it maybe would be worth considering adding it. In my case it would be cumbersome to deploy the meteor app in question to all docker hosts without bundling it beforehand. The dev environments (which also is a little bit different from developer to developer) on the other hand have no docker so we would need to add it and change the build pipeline. Seems like a lot of effort and afaik meteor build isn't depreciated or has drawbacks or is there a problem I don't see?

Image no longer working after the last update

--unsafe-perm: unknown option.
Usage: meteor build [--debug] [--directory] [--server-only]
[--mobile-settings settings.json] [--server http://example.com:3000]

Package this project up for deployment. The command outputs a directory with
builds for all platforms in this project.

If you have added mobile platforms to your project with the
'meteor add-platform' command, then the output directory will contain
subdirectories named 'android' (with the APK bundle and Android project
source) and/or 'ios' (with the Xcode project source).

Load settings.json from filesystem

Hi

In Kubernetes it would be nice to store settings.json as a secret and have the secret volume mounted into the pod. To solve that I added the following code to my fork entrypoint.sh

# Use settings file if available
if [ -e /opt/meteor/settings/settings.json ]; then
  export METEOR_SETTINGS=$(cat /opt/meteor/settings/settings.json | tr -ds '\n' ' ')
fi

Then I mount the secret to /opt/meteor/settings. Example yaml snipped.


volumeMounts:
      -
        name: secrets
        mountPath: /opt/meteor/settings
        readOnly: true

Maybe you know better ways to do that. But I think meteor-launchpad should have such an option.

Support of private npm modules

Hey, looks like this is currently most active Meteor Docker image project!

But it misses support of private npm modules.

It's easy achievable with just two lines of code - https://docs.npmjs.com/private-modules/docker-and-private-modules

ARG NPM_TOKEN
RUN echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc

Custom npm registry also can be adjusted, but I doubt this feature is wanted enough.

Also not sure if node creates empty .npmrc after installation, so maybe we should write token somewhere after install-node.sh, something to look at.

Anyway, thanks for putting your effort!

GOSU_VERSION

What is GOSU_VERSION ?
Just noticed in the Dockerfile, no idea what it is for/does...
😕

[Feature Request] Lets Encrypt SSL

Are there any plans to add Lets Encrypt SSL support as an option to deployment.

I think this would be a killer feature.

If not, do you happen to know any good ways to setup nginx or other reverse proxy in combination with meteor-launchpad?

Add support for git urls in package.json by installing git

Please add git to install-deps.sh to add support for public and private git repositories in package.json like: git+https://github.com/Jank1310/XYZ.git

apt-get install -y --no-install-recommends curl ca-certificates bzip2 build-essential numactl python wget git

P.S. Thank you for making this image 👍

Can't find entrypoint.sh trying to debug

When I build my container based on jshimko/meteor-launchpad:latest , I'm getting out of memory errors. (meteor/meteor#8157) . (Only fails in the Docker build, it is fine otherwise). To find a workaround, I'm trying to debug my partially built container with:

docker run -t - i <image> --entrypoint /bin/sh

but I keep getting:

docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"./entrypoint.sh\": stat ./entrypoint.sh: no such file or directory".

Directory not empty error - build.sh

Virtualbox hosting RHEL 7.2 (latest)
Docker version 1.13.0, build 49bf474
build.sh - post-install-cleanup.sh is failing with "Directory not empty"

Licence

Can you specify the licence 📜 for this repository?

Thanks 🌠

devbuild and latest errors - first time user

Trying to use meteor-launchpad for the first time today.

Getting different errors with "devbuild" and "latest".
Probably something I am doing incorrectly. Please point me in the right direction.

devbuild:

Dockerfile
FROM jshimko/meteor-launchpad:devbuild

Error:

$ docker build -t rhicks/app .
Sending build context to Docker daemon 35.84 kB
Step 1 : FROM jshimko/meteor-launchpad:devbuild
# Executing 6 build triggers...
Step 1 : RUN bash $BUILD_SCRIPTS_DIR/install-meteor.sh
 ---> Using cache
Step 1 : COPY . $APP_SOURCE_DIR
Step 1 : RUN $BUILD_SCRIPTS_DIR/build-meteor.sh
 ---> Running in a28cea4f3b27

[-] Running npm install in app directory...

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

[-] Building Meteor application...

build: You're not in a Meteor project directory.

To create a new Meteor project:
  meteor create <project name>
For example:
  meteor create myapp

For more help, see 'meteor --help'.
The command '/bin/sh -c $BUILD_SCRIPTS_DIR/build-meteor.sh' returned a non-zero code: 1

latest:

Dockerfile
FROM jshimko/meteor-launchpad:latest

Error:

$ docker build -t rhicks/app .
Sending build context to Docker daemon 35.84 kB
Step 1 : FROM jshimko/meteor-launchpad:latest
# Executing 5 build triggers...
Step 1 : COPY . $APP_SOURCE_DIR
Step 1 : RUN bash $BUILD_SCRIPTS_DIR/install-phantom.sh
 ---> Running in bab0d8d995fd
Step 1 : RUN bash $BUILD_SCRIPTS_DIR/install-mongo.sh
 ---> Running in fa5fe541fad4
Step 1 : RUN bash $BUILD_SCRIPTS_DIR/install-graphicsmagick.sh
 ---> Running in 308c27b31e19
Step 1 : RUN cd $APP_SOURCE_DIR &&             bash $BUILD_SCRIPTS_DIR/install-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/build-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/post-build-cleanup.sh
 ---> Running in f461603b79af
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7786    0  7786    0     0  10090      0 --:--:-- --:--:-- --:--:-- 10085
head: cannot open '/opt/meteor/src/.meteor/release' for reading: No such file or directory

[-] Installing Meteor ...

Downloading Meteor distribution
Retrying download in 5 seconds...
Retrying download in 5 seconds...
Retrying download in 5 seconds...
Retrying download in 5 seconds...
Retrying download in 5 seconds...
Retrying download in 5 seconds...
Retrying download in 5 seconds...
Retrying download in 5 seconds...
Retrying download in 5 seconds...
Retrying download in 5 seconds...
The command '/bin/sh -c cd $APP_SOURCE_DIR &&             bash $BUILD_SCRIPTS_DIR/install-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/build-meteor.sh &&             bash $BUILD_SCRIPTS_DIR/post-build-cleanup.sh' returned a non-zero code: 1

Running MongoDb inside the same container is not working

Hey,

first Thank You very much for this nice project, it might be exactly what will save my project from going into the trash bin (if it wasn't for Debian having a like 5 years old MPV player version).

So my application is a little unorthodox, it was never intended to run on a web server in some server cluster. It should run inside your home network on a Pi or your Laptop, that's why it has to be easy to set up (And meteor apps really are not...) and that's why for this app it perfectly fine to run MongoDb from inside in production mode.

What did I do?

For testing I downloaded the simple-todos app from the meteor repository

wget https://github.com/meteor/simple-todos.git

I created a Dockerfile and a launchpad.conf with INSTALL_MONGO=true. Then I ran

docker build -t jan/simple-todos

When I then tried to run it with

docker run  -p 80:3000 jan/test-todos

omitting the MONGO_URL as stated in your Readme, I get the following Error

=> Starting app on port 3000...
/opt/meteor/dist/bundle/programs/server/node_modules/fibers/future.js:280
						throw(ex);
						^

Error: MONGO_URL must be set in environment
    at Object.<anonymous> (packages/mongo/remote_collection_driver.js:36:11)
    at Object.defaultRemoteCollectionDriver (packages/underscore/underscore.js:750:1)
    at new Mongo.Collection (packages/mongo/collection.js:103:40)
    at AccountsServer.AccountsCommon (packages/accounts-base/accounts_common.js:23:18)
    at new AccountsServer (packages/accounts-base/accounts_server.js:18:5)
    at meteorInstall.node_modules.meteor.accounts-base.server_main.js (packages/accounts-base/server_main.js:9:12)
    at fileEvaluate (packages/modules-runtime/.npm/package/node_modules/install/install.js:153:1)
    at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:82:1)
    at /opt/meteor/dist/bundle/programs/server/packages/accounts-base.js:1798:15
    at /opt/meteor/dist/bundle/programs/server/packages/accounts-base.js:1809:3

I have checked your code and didn't find anywhere, where the environment variable MONGO_URL is actually set. All I found was the part in entrypoint.sh with the if condition, but it does not seem to actually set the MONGO_URL.

Unfortunately I'm not really good with bash scripting, that's why fixing it myself and opening a pull request wasn't possible.

I particularly tried it with the meteor example app, the rule out the possibility of my app having anything to do with it. It is just the plain simple-todos app, no modifications what so ever.

Cheers,

Jan

Error: EXDEV: cross-device link not permitted

I'm getting this error in docker cloud automated builds, but not in quay.io builds. Quay builds perfectly. I don't know what a cross-device link is, in docker context.

The full error is:
Error: EXDEV: cross-device link not permitted, rename '/opt/meteor/dist/bundle' -> '/opt/meteor/dist/bundle-garbage-14tplr2'

Cross posted here:
docker/hub-feedback#852

Testing

I'm looking to incorporate testing into the build process.

At what point should the following command be run? I've forked this repository and tried adding it after meteor gets installed in build-meteor.sh, but the command seems to be ignored (the build succeeds but the logs show no trace of the tests running):

meteor test --once --driver-package dispatch:mocha-phantomjs

Error building

Building on docker cloud with your docker-compose.yml produces the following error, using Meteor 1.5.1:

> [email protected] install /opt/meteor/dist/bundle/programs/server
> node npm-rebuild.js
> [email protected] install /opt/meteor/dist/bundle/programs/server/npm/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build
module.js:327
throw err;
^
Error: Cannot find module '../'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/opt/meteor/dist/bundle/programs/server/npm/node_modules/.bin/node-pre-gyp:15:20)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1

/opt/build_scripts/build-meteor.sh: line 17: 65 Killed

Hey @jshimko ,

Thanks for taking the time to put this together. I'm trying to migrate from mup to meteor-launchpad but I'm hitting the below error when building the image, do you have any ideas on how I can resolve this?

docker build -t nzwade/portfoliorobot_meteor:latest .
Sending build context to Docker daemon 79.26 MB
Step 1 : FROM jshimko/meteor-launchpad:latest

Executing 2 build triggers...
Step 1 : COPY . $APP_SOURCE_DIR
Step 1 : RUN cd $APP_SOURCE_DIR && bash $BUILD_SCRIPTS_DIR/install-meteor.sh && bash $BUILD_SCRIPTS_DIR/build-meteor.sh && bash $BUILD_SCRIPTS_DIR/post-build-cleanup.sh
---> Running in 130abcb98d36
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7786 0 7786 0 0 18393 0 --:--:-- --:--:-- --:--:-- 18450

[-] Installing Meteor 1.4.1.2...

Downloading Meteor distribution

Meteor 1.4.1.2 has been installed in your home directory (~/.meteor).
Writing a launcher script to /usr/local/bin/meteor for your convenience.

To get started fast:

$ meteor create ~/my_cool_app
$ cd ~/my_cool_app
$ meteor

Or see the docs at:

docs.meteor.com

[-] Building Meteor application...

npm WARN [email protected] No description
npm WARN [email protected] No repository field.
/opt/build_scripts/build-meteor.sh: line 17: 65 Killed meteor build --directory $APP_BUNDLE_DIR
The command '/bin/sh -c cd $APP_SOURCE_DIR && bash $BUILD_SCRIPTS_DIR/install-meteor.sh && bash $BUILD_SCRIPTS_DIR/build-meteor.sh && bash $BUILD_SCRIPTS_DIR/post-build-cleanup.sh' returned a non-zero code: 137

My dev environment is MacOS, for deployment I copied all the Meteor files over to my Ubuntu virtual machine (excluding the .meteor/local file) and ran the above in terminal.

Let me know if I can provide anything else that will help

How to bind a volume to internally installed mongodb's data path

Hello,

I'm trying to bind an external volume to keep my settings persistent (as expected) so I'm trying to run docker with argument:
-v /home/sercan/mongoclient_data2/:/data/db

But it fails to run, that's probably you've changed how to install mongodb and now it's being started as mongodb user.
Is there a workaround to run docker with this argument ?

Thanks in advance.

OpenSSL vulnerability found by docker hub image scanner

I gave up on the meteorhacks/meteord images a while back as it broke with the latest Meteor version, so I started using yours. Thank you for the work on it!

The new Docker Security Scanning on dockerhub notified me that there's a published CVE found in the OpenSSL version in my Meteor app image that's based on your image. It's interesting to note that the meteord image I still have in our dockerhub repo has the same vulnerability.

Question: Is this something that you are able to update from your upstream linux distro? Mentioning here so it's tracked until it gets included.

Report from docker hub:

New vulnerabilities were detected in your repositories due to a CVE database update.
To learn more about Docker Security Scanning, see https://docs.docker.com/docker-cloud/builds/image-scan/.
You can address the vulnerability by using a more secure version of the component (if available). If the vulnerability is in a base layer, you can rebuild your image once the base layer's vulnerability has been fixed and repush the new image. We will scan it again.

CVE-2016-6303 (Critical, 7.5 CVSS score)

Integer overflow in the MDC2_Update function in crypto/mdc2/mdc2dgst.c in OpenSSL before 1.1.0 allows remote attackers to cause a denial of service (out-of-bounds write and application crash) or possibly have unspecified other impact via unknown vectors.

Error: Module did not self-register.

I was using your excellent meteord image; the build failing (saying image not found) brought me here to try meteor-launchpad.

My app builds correctly, but when launched on staging I get:

25/10/2016 23:04:02Error: Module did not self-register.
25/10/2016 23:04:02 at Error (native)
25/10/2016 23:04:02 at Object.Module._extensions..node (module.js:434:18)
25/10/2016 23:04:02 at Module.load (module.js:343:32)
25/10/2016 23:04:02 at Module.Mp.load (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/babel-compiler/node_modules/reify/node/runtime.js:16:23)
25/10/2016 23:04:02 at Function.Module._load (module.js:300:12)
25/10/2016 23:04:02 at Module.require (module.js:353:17)
25/10/2016 23:04:02 at require (internal/module.js:12:17)
25/10/2016 23:04:02 at bindings (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/node_modules/bindings/bindings.js:76:44)
25/10/2016 23:04:02 at Object. (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt/node_modules/bcrypt/bcrypt.js:3:35)
25/10/2016 23:04:02 at Module._compile (module.js:409:26)
25/10/2016 23:04:04=> Starting app on port 80...
25/10/2016 23:04:09/opt/meteor/dist/bundle/programs/server/node_modules/fibers/future.js:280
25/10/2016 23:04:09 throw(ex);

Clarify Build Process in Readme

I was playing around trying to build this image locally, and it took me awhile to figure out that you have to run the build.sh file first to get it to work so others might have trouble as well.

Maybe add a "Building the Image Locally" section with "Run the build.sh file" line to the readme.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.