Comments (6)
There isn't, because it would be a very different structure: you'd want to map in your source files so that it rebuilds on save, you'd want to map in all node_modules
folders so that they're cached, etc. The result would probably be slower than the regular meteor
command.
If you build one and it seems to work well, please share!
from meteor-base.
FWIW, I may have an image I can share soon on this, if you're interested. It does take a while to boot up, but works pretty well for development after that.
from meteor-base.
Yes please!
from meteor-base.
My files:
https://github.com/globeandmail/chart-tool/blob/dockerization/docker-compose.yml
https://github.com/globeandmail/chart-tool/blob/dockerization/docker/dev.Dockerfile
This app is a bit unusual in that it's actually two things in one: a Meteor-driven interface and a charting library (hence the exposing of two ports — one for building out the library using Gulp, Browsersync, etc., and another for the interface). But that lays out the rough structure. It works for me right now. Like I said, boot-up takes a bit (Meteor has to do all the package finding and installing stuff), but it works pretty well after that, though I did have to increase my Docker memory size a bit (to 4096mb).
I'll probably end up adding an additional flag, for --exclude-archs "web.browser.legacy, web.cordova"
since we don't really care about non-Linux architectures anymore and it'll speed up performance a bit.
from meteor-base.
The Dockerfile path changed and now is https://github.com/globeandmail/chart-tool/blob/dockerization/Dockerfile.dev
from meteor-base.
Hi @tomcardoso
I am wondering if you continue with the idea of the repo to dockerize a meteor app for devel?
I tried to use the configuration you mentioned with some little changes
- s/chart-tool/keeptrack
- Update Meteor and Node versions.
- My Application is located at root level so I removed the /app references
In addition, I have to comment out the section related to gulp
RUN npm ci --unsafe-perm && \
npm rebuild node-sass
After the build, I got the three containers, but the app doesn't have a port, and when I try to access http://localhost:3000 doesn't work and the status is exited.
The logs show this
browserless_1 | 2020-07-08T07:20:11.812Z browserless:server {
browserless_1 | CONNECTION_TIMEOUT: 60000,
browserless_1 | MAX_CONCURRENT_SESSIONS: 10,
browserless_1 | QUEUE_LENGTH: 10,
browserless_1 | SINGLE_RUN: false,
browserless_1 | CHROME_REFRESH_TIME: 1800000,
browserless_1 | KEEP_ALIVE: false,
browserless_1 | DEFAULT_BLOCK_ADS: false,
browserless_1 | DEFAULT_HEADLESS: true,
browserless_1 | DEFAULT_LAUNCH_ARGS: [],
browserless_1 | DEFAULT_IGNORE_DEFAULT_ARGS: false,
browserless_1 | DEFAULT_IGNORE_HTTPS_ERRORS: false,
browserless_1 | DEFAULT_USER_DATA_DIR: undefined,
browserless_1 | PREBOOT_CHROME: false,
browserless_1 | DEBUG: 'browserless*',
browserless_1 | DEMO_MODE: false,
browserless_1 | DISABLED_FEATURES: [],
browserless_1 | ENABLE_CORS: false,
browserless_1 | ENABLE_API_GET: false,
browserless_1 | TOKEN: null,
browserless_1 | DISABLE_AUTO_SET_DOWNLOAD_BEHAVIOR: false,
browserless_1 | FUNCTION_BUILT_INS: [ 'url' ],
browserless_1 | FUNCTION_ENABLE_INCOGNITO_MODE: false,
browserless_1 | FUNCTION_EXTERNALS: [ 'lighthouse', 'node-pdftk', 'sharp' ],
browserless_1 | WORKSPACE_DIR: '/usr/src/app/workspace',
browserless_1 | WORKSPACE_DELETE_EXPIRED: false,
browserless_1 | WORKSPACE_EXPIRE_DAYS: 30,
browserless_1 | FAILED_HEALTH_URL: null,
browserless_1 | QUEUE_ALERT_URL: null,
browserless_1 | REJECT_ALERT_URL: null,
browserless_1 | TIMEOUT_ALERT_URL: null,
browserless_1 | ERROR_ALERT_URL: null,
browserless_1 | EXIT_ON_HEALTH_FAILURE: false,
browserless_1 | MAX_CPU_PERCENT: 99,
browserless_1 | MAX_MEMORY_PERCENT: 99,
browserless_1 | METRICS_JSON_PATH: null,
browserless_1 | HOST: '0.0.0.0',
browserless_1 | PORT: 3000,
browserless_1 | PROXY_HOST: undefined,
browserless_1 | PROXY_PORT: undefined,
browserless_1 | PROXY_SSL: false,
browserless_1 | MAX_PAYLOAD_SIZE: '5mb'
browserless_1 | } Final configuration
keeptrack_app_1 exited with code 1
The app works in production with MUP (http://meteor-up.com/), so maybe is not the code.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f6c4384e414a keeptrack_app "docker-entrypoint.s…" 12 minutes ago Exited (1) 12 minutes ago keeptrack_app_1
b2110d31df3d mongo:latest "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 27017/tcp keeptrack_mongo_1
e91244de311c browserless/chrome:latest "./start.sh" 12 minutes ago Up 12 minutes 3000/tcp keeptrack_browserless_1
Thanks in advance for any ideas about how to fix this.
Configuration files:
DockerFile
# In dev environment, we expect to keep running gulp to build Chart Tool library
# JS/CSS files, and then Docker will watch those changes occur in the folder and
# reflect them in our containerized instance.
# Borrowing from https://github.com/disney/meteor-base/ and https://github.com/staeke/meteor-alpine/
# Use the specific version of Node expected by your Meteor release, per https://docs.meteor.com/changelog.html; this is expected for Meteor 1.10.2
FROM node:12.16.3-alpine
# Setup environment variables that will be available to the instance
ENV METEOR_VERSION 1.9.3
RUN apk add --update --no-cache bash
# Here we're running https://github.com/staeke/meteor-alpine/ with a few tweaks
RUN export TEMP_PACKAGES="alpine-sdk libc6-compat python linux-headers" && \
apk add --update --no-cache $TEMP_PACKAGES && \
curl https://install.meteor.com/?release=${METEOR_VERSION} | sh && \
cd /root/.meteor/packages/meteor-tool/*/mt-os.linux.x86_64 && \
cp scripts/admin/launch-meteor /usr/bin/meteor && \
cd dev_bundle && \
cd bin && \
rm node && \
rm npm && \
rm npx && \
ln -s $(which node) && \
ln -s $(which npm) && \
ln -s $(which npx) && \
cd ../mongodb/bin && \
rm mongo mongod && \
cd ../../lib && \
npm rebuild && \
cd ~ && \
ln -s /root/.meteor && \
apk del $TEMP_PACKAGES
ENV APP_HOME /keeptrack
# Create a directory for our application
# and set it as the working directory
RUN mkdir $APP_HOME
RUN mkdir $APP_HOME/.meteor
WORKDIR $APP_HOME
# Copy app and meteor package.json and package-lock.json into container
COPY package*.json $APP_HOME/
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
# Fix permissions warning; https://github.com/meteor/meteor/issues/7959
ENV METEOR_ALLOW_SUPERUSER=1
# Install gulp so we can run our servers, then npm install
# everything and rebuild node-sass
#RUN npm ci --unsafe-perm && \
# npm rebuild node-sass
COPY . $APP_HOME
EXPOSE 3000
EXPOSE 3030
CMD ["/bin/sh" , "-c" , "meteor --no-release-check --exclude-archs 'web.browser.legacy, web.cordova'"]
DockerCompose file
version: '3'
services:
app:
volumes:
- ./:/keeptrack
build:
context: .
dockerfile: Dockerfile
ports:
- '3000:3000'
- '3030:3030'
depends_on:
- mongo
- browserless
environment:
NODE_ENV: development
MONGO_URL: mongodb://mongo:27017/meteor
MAIL_URL: smtp://user:password@mailhost:port/
DOCKER: 'TRUE'
PORT: 3000
ROOT_URL: http://app
CHROME_REMOTE_URL: ws://browserless:3000
networks:
- keeptrack-network
mongo:
image: mongo:latest
command:
- --storageEngine=wiredTiger
- --logpath=/dev/null
volumes:
- data:/data/db
networks:
- keeptrack-network
browserless:
image: browserless/chrome:latest
networks:
- keeptrack-network
restart: always
networks:
keeptrack-network:
volumes:
data:
from meteor-base.
Related Issues (20)
- Need help with `canvas` pls HOT 2
- New CVE-2022-0778 HOT 2
- Include 2.5.7-beta.0 HOT 1
- '/root/.meteor' exists, but '/root/.meteor/meteor' is not executable. HOT 32
- Proxy Configuration HOT 1
- Add better minification and obfuscation HOT 1
- Error with Vite bundler for Meteor + Vue 3 app HOT 5
- Missing 2.8.1 tag on docker hub HOT 1
- Missing 2.9.0 & 2.9.1 tags on Docker hub HOT 1
- No ark available HOT 1
- TypeError in docker HOT 1
- Error: Could not get https://warehouse.meteor.com HOT 2
- Add ssh to base image to install dependencies directly from Git/Github HOT 1
- app not available at localhost HOT 1
- Missing 2.8.2 tag on docker hub HOT 1
- build-meteor-bundle.sh error HOT 2
- No version needed in `docker-compose.yml` and updates to reflect latest changes in the docker ecosystem HOT 1
- update.sh adds duplicated lines to support.sh HOT 1
- Missing 2.15 tag on Docker hub HOT 2
- Development version? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from meteor-base.