docker-ember
docker-ember copied to clipboard
Ember-CLI Docker image
Ember-CLI + Node.js (Current & LTS) + Yarn
A Docker image for creating ambitious Ember applications :hamster:
Table of Contents
- Ember-CLI + Node.js (Current & LTS) + Yarn
- Table of Contents
- Image Contents
- Dockerfiles and tags
- Ember-CLI v3.1.4
- Ember-CLI v3.1.3
- Ember-CLI v2.18.2 (Ember LTS):
- Ember-CLI v3.1.2
- Ember-CLI v3.1.1
- Ember-CLI v3.1.0
- Ember-CLI v3.0.4
- Ember-CLI v3.0.3
- Ember-CLI v3.0.2
- Ember-CLI v3.0.1
- Ember-CLI v3.0.0
- Ember-CLI v2.18.2
- Ember-CLI v2.18.1
- Ember-CLI v2.18.0
- Ember-CLI v2.17.2
- Ember-CLI v2.17.1
- Ember-CLI v2.17.0
- Ember-CLI v2.16.2
- Ember-CLI v2.16.1
- Ember-CLI v2.16.0
- Ember-CLI v2.15.1
- Ember-CLI v2.15.0
- Ember-CLI v2.14.2
- Ember-CLI v2.14.1
- Ember-CLI v2.14.0
- Ember-CLI v2.13.3
- Ember-CLI v2.13.2
- Ember-CLI v2.13.1
- Ember-CLI v2.12.3
- Usage
docker runexamplesdocker-composeexamples
- FAQ
- How do you keep up with new versions?
- What happens with outdated Node.js versions between LTS releases?
- You said this image has everything I need to work with Ember.js, but where's Bower?
- Where's the
latesttag? - Since 2.16.0,
ember test -sends up showing a Chrome error regarding some SUID sandbox. How do I make it work?- 3.0.0 < Ember-CLI >= 2.16.0
- Ember-CLI >= 3.0.0
- I have a custom Dockerfile based on yours, and my
USERis no longer root because of reason X. With tags between 2.16.0 and 3.0.0,ember test -sends up showing an "operation not permitted" error. How do I make it work?
Image Contents
This image has everything you need to work with Ember.js:
- Debian Jessie / Alpine Linux
- Node.js
- Yarn (npm's still there, don't worry)
- PhantomJS (for Ember-CLI < 3.0.0, why?)
- Watchman
- Google Chrome (why?)
- And, of course, Ember-CLI
All perfectly versioned, up-to-date and working.
Dockerfiles and tags
Ember-CLI v3.1.4
Debian:
- w/Node.js v10.1.0 | Dockerfile
docker pull sergiolepore/ember-cli:3.1.4-node_10.1.0Yarn v1.6.0Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.1.4-node_8.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
Alpine:
- w/Node.js v10.1.0 | Dockerfile
docker pull sergiolepore/ember-cli:3.1.4-node_10.1.0-alpineYarn v1.6.0Watchman v4.9.0Chromium Edge
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.1.4-node_8.11.1-alpineYarn v1.5.1Watchman v4.9.0Chromium Edge
Ember-CLI v3.1.3
Debian:
- w/Node.js v10.0.0 | Dockerfile
docker pull sergiolepore/ember-cli:3.1.3-node_10.0.0Yarn v1.6.0Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.1.3-node_8.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
Alpine:
- w/Node.js v10.0.0 | Dockerfile
docker pull sergiolepore/ember-cli:3.1.3-node_10.0.0-alpineYarn v1.6.0Watchman v4.9.0Chromium Edge
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.1.3-node_8.11.1-alpineYarn v1.5.1Watchman v4.9.0Chromium Edge
Ember-CLI v2.18.2 (Ember LTS):
Debian:
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:2.18.2-node_9.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.18.2-node_8.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
Alpine:
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:2.18.2-node_9.11.1-alpineYarn v1.5.1Watchman v4.9.0Chromium Edge
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.18.2-node_8.11.1-alpineYarn v1.5.1Watchman v4.9.0Chromium Edge
Ember-CLI v3.1.2
Debian:
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:3.1.2-node_9.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.1.2-node_8.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
Alpine:
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:3.1.2-node_9.11.1-alpineYarn v1.5.1Watchman v4.9.0Chromium Edge
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.1.2-node_8.11.1-alpineYarn v1.5.1Watchman v4.9.0Chromium Edge
Ember-CLI v3.1.1
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:3.1.1-node_9.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.1.1-node_8.11.1Yarn v1.5.1Watchman v4.9.0- `Google Chrome stable
Ember-CLI v3.1.0
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:3.1.0-node_9.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.1.0-node_8.11.1Yarn v1.5.1Watchman v4.9.0- `Google Chrome stable
Ember-CLI v3.0.4
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:3.0.4-node_9.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.0.4-node_8.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
Ember-CLI v3.0.3
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:3.0.3-node_9.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.0.3-node_8.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
Ember-CLI v3.0.2
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:3.0.2-node_9.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.0.2-node_8.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
Ember-CLI v3.0.1
- w/Node.js v9.11.1 | Dockerfile
docker pull sergiolepore/ember-cli:3.0.1-node_9.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
- w/Node.js v8.11.1 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.0.1-node_8.11.1Yarn v1.5.1Watchman v4.9.0Google Chrome stable
Ember-CLI v3.0.0
- w/Node.js v9.5.0 Experimental | Dockerfile
docker pull sergiolepore/ember-cli:3.0.0-node_9.5.0-experimental- Contains exactly the same dependencies as
3.0.0-node_9.5.0 - Now working as non-root
- Support for Google Chrome running as non-root
- All the goodies will be included in the next image tag
- w/Node.js v9.5.0 | Dockerfile
docker pull sergiolepore/ember-cli:3.0.0-node_9.5.0Yarn v1.3.2Watchman v4.9.0Google Chrome stable
- w/Node.js v8.9.4 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:3.0.0-node_8.9.4Yarn v1.3.2Watchman v4.9.0Google Chrome stable
Ember-CLI v2.18.2
- w/Node.js v9.5.0 | Dockerfile
docker pull sergiolepore/ember-cli:2.18.2-node_9.5.0Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
- w/Node.js v8.9.4 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.18.2-node_8.9.4Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
Ember-CLI v2.18.1
- w/Node.js v9.5.0 | Dockerfile
docker pull sergiolepore/ember-cli:2.18.1-node_9.5.0Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
- w/Node.js v8.9.4 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.18.1-node_8.9.4Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
Ember-CLI v2.18.0
- w/Node.js v9.5.0 | Dockerfile
docker pull sergiolepore/ember-cli:2.18.0-node_9.5.0Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
- w/Node.js v8.9.4 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.18.0-node_8.9.4Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
Ember-CLI v2.17.2
- w/Node.js v8.9.4 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.17.2-node_8.9.4Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
- w/Node.js v6.12.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.17.2-node_6.12.3Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
Ember-CLI v2.17.1
- w/Node.js v8.9.4 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.17.1-node_8.9.4Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
- w/Node.js v6.12.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.17.1-node_6.12.3Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
Ember-CLI v2.17.0
- w/Node.js v8.9.4 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.17.0-node_8.9.4Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
- w/Node.js v6.12.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.17.0-node_6.12.3Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
Ember-CLI v2.16.2
- w/Node.js v8.9.4 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.16.2-node_8.9.4Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
- w/Node.js v6.12.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.16.2-node_6.12.3Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
Ember-CLI v2.16.1
- w/Node.js v8.9.4 (Node LTS) | Dockerfile
docker pull sergiolepore/ember-cli:2.16.1-node_8.9.4Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
- w/Node.js v6.12.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.16.1-node_6.12.3Yarn v1.3.2PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
Ember-CLI v2.16.0
- w/Node.js v8.4.0 | Dockerfile
docker pull sergiolepore/ember-cli:2.16.0-node_8.4.0Yarn v0.27.5PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
- w/Node.js v6.11.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.16.0-node_6.11.3Yarn v0.27.5PhantomJS v2.1.14Watchman v4.9.0Google Chrome stable
Ember-CLI v2.15.1
- w/Node.js v8.4.0 | Dockerfile
docker pull sergiolepore/ember-cli:2.15.1-node_8.4.0Yarn v0.27.5PhantomJS v2.1.14Watchman v4.7.0Google Chrome stable
- w/Node.js v6.11.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.15.1-node_6.11.3Yarn v0.27.5PhantomJS v2.1.14Watchman v4.7.0Google Chrome stable
Ember-CLI v2.15.0
- w/Node.js v8.4.0 | Dockerfile
docker pull sergiolepore/ember-cli:2.15.0-node_8.4.0Yarn v0.27.5PhantomJS v2.1.14Watchman v4.7.0Google Chrome stable
- w/Node.js v6.11.2 | Dockerfile
docker pull sergiolepore/ember-cli:2.15.0-node_6.11.2Yarn v0.27.5PhantomJS v2.1.14Watchman v4.7.0Google Chrome stable
Ember-CLI v2.14.2
- w/Node.js v8.2.1 | Dockerfile
docker pull sergiolepore/ember-cli:2.14.2-node_8.2.1Yarn v0.27.5PhantomJS v2.1.14Watchman v4.7.0
- w/Node.js v6.11.2 | Dockerfile
docker pull sergiolepore/ember-cli:2.14.2-node_6.11.2Yarn v0.27.5PhantomJS v2.1.14Watchman v4.7.0
Ember-CLI v2.14.1
- w/Node.js v8.1.2 | Dockerfile
docker pull sergiolepore/ember-cli:2.14.1-node_8.1.2Yarn v0.24.4PhantomJS v2.1.14Watchman v4.7.0
- w/Node.js v6.11.2 | Dockerfile
docker pull sergiolepore/ember-cli:2.14.1-node_6.11.2Yarn v0.27.5PhantomJS v2.1.14Watchman v4.7.0
Ember-CLI v2.14.0
- w/Node.js v8.1.2 | Dockerfile
docker pull sergiolepore/ember-cli:2.14.0-node_8.1.2Yarn v0.24.4PhantomJS v2.1.14Watchman v4.7.0
- w/Node.js v6.11.2 | Dockerfile
docker pull sergiolepore/ember-cli:2.14.0-node_6.11.2Yarn v0.27.5PhantomJS v2.1.14Watchman v4.7.0
Ember-CLI v2.13.3
- w/Node.js v8.1.2 | Dockerfile
docker pull sergiolepore/ember-cli:2.13.3-node_8.1.2Yarn v0.24.4PhantomJS v2.1.14Watchman v4.7.0
- w/Node.js v6.11.2 | Dockerfile
docker pull sergiolepore/ember-cli:2.13.3-node_6.11.2Yarn v0.27.5PhantomJS v2.1.14Watchman v4.7.0
Ember-CLI v2.13.2
- w/Node.js v7.10.0 | Dockerfile
docker pull sergiolepore/ember-cli:2.13.2-node_7.10.0Yarn v0.24.4PhantomJS v2.1.14Watchman v4.7.0
- w/Node.js v6.10.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.13.2-node_6.10.3Yarn v0.24.4PhantomJS v2.1.14Watchman v4.7.0
Ember-CLI v2.13.1
- w/Node.js v7.10.0 | Dockerfile
docker pull sergiolepore/ember-cli:2.13.1-node_7.10.0Yarn v0.24.4PhantomJS v2.1.14Watchman v4.7.0
- w/Node.js v6.10.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.13.1-node_6.10.3Yarn v0.24.4PhantomJS v2.1.14Watchman v4.7.0
Ember-CLI v2.12.3
- w/Node.js v6.10.3 | Dockerfile
docker pull sergiolepore/ember-cli:2.12.3-node_6.10.3Yarn v0.24.4Bower v1.8.0PhantomJS v2.1.14Watchman v4.7.0
Usage
docker pull sergiolepore/ember-cli:x.x.x-node_x.x.x- Container working directory is
/myapp, so you might want to mount a volume there (or override it) - Port
7020is exposed (livereload) - Port
4200is exposed (app) - Port
7357is exposed (TestEm) ember serveris the default command to be run when executing the image
docker run examples
# ember blueprints
$ docker run -it --rm \
-v /my/project/directory:/myapp \
sergiolepore/ember-cli:3.1.4-node_10.1.0 \
ember init --yarn
$ docker run -it --rm \
-v /my/project/directory:/myapp \
sergiolepore/ember-cli:3.1.4-node_10.1.0 \
ember g route hamsters
# yarn
$ docker run -it --rm \
-v /my/project/directory:/myapp \
sergiolepore/ember-cli:3.1.4-node_10.1.0 \
yarn add [email protected]
# server
$ docker run -it \
-v /my/project/directory:/myapp \
-p 4200:4200 \
-p 7020:7020 \
sergiolepore/ember-cli:3.1.4-node_10.1.0
# working on Windows?
$ docker run -it \
-v /my/project/directory:/myapp \
-p 4200:4200 \
-p 7020:7020 \
sergiolepore/ember-cli:3.1.4-node_10.1.0 \
ember server --watcher polling
# bash
$ docker run -it \
-v /my/project/directory:/myapp \
-p 4200:4200 \
-p 7020:7020 \
sergiolepore/ember-cli:3.1.4-node_10.1.0 \
bash
node@container-id:/myapp# ember init --yarn
node@container-id:/myapp# ember g route hamsters
node@container-id:/myapp# yarn add [email protected]
node@container-id:/myapp# ember server
docker-compose examples
- A
docker-compose.ymlfile in/my/project/directory
services:
emberapp:
image: sergiolepore/ember-cli:3.1.4-node_10.1.0
ports:
- "4200:4200"
- "7020:7020"
- "7357:7357"
volumes:
- .:/myapp
$ docker-compose run --rm emberapp ember init --yarn
$ docker-compose up
FAQ
How do you keep up with new versions?
Here's what I've been doing: each time a final release of Ember-CLI gets published, I check for the latest LTS and Current Node.js versions and I generate a new Dockerfile based on that. This ensures there will always be an up-to-date image containing the latest security patches and bugfixes from both projects. Alongside those changes, I update all dependencies to their latest version.
I'll try to keep parity between Node.js and Ember.js LTS versions for as long as possible (Ember 2.12.x - Node 6.x, for example).
What happens with outdated Node.js versions between LTS releases?
Sorry, but when a major version of Node.js stops getting updates, I stop supporting it as well. If you think you're stuck on one of those versions, please consider upgrading to, at least, the next available LTS.
You said this image has everything I need to work with Ember.js, but where's Bower?
Bower is now an optional dependency since Ember-CLI 2.13, so I decided to exclude it from my v2.13+ images. If you still need it, I recommend you to create your own custom image:
FROM sergiolepore/ember-cli:x.x.x-node_x.x.x
RUN yarn global add [email protected]
### ...
Where's the latest tag?
Sorry, but I don't believe in "latest" things :grin:. No, seriously. Be aware of the version you're working with in order to avoid headaches. Always. 🦌
Since 2.16.0, ember test -s ends up showing a Chrome error regarding some SUID sandbox. How do I make it work?
This is one of those things that I really HATE about the Chrome integration.
In order to fix it, you'll have to edit your testem.js file and configure a new argument, --no-sandbox, for your mode: 'dev'. A lot can be written about the implications, pros & cons of this, but I thought that this "solution" is the only one worth implementing. If you open the Dockerfile, you'll notice that there's a patch that adds --no-sandbox directly to the system so you don't have to add it to testem.js, BUT it's being ignored for some reason. If I figure out how to make it work without having to edit the Test'em file, I'll ship the patch into a new Dockerfile. I will not update the old ones.
"But my Test'em file (pre Ember 3) can only have ONE custom config and it's set to
ci! I cannot adddevwithout losingci!" - You, probably.
This is an issue ONLY for Ember-CLI versions prior to 3.0.0. The new Test'em allows you to have different modes with their custom, isolated args. If you are using the old Test'em, you'll have to remove the mode key entirely and just use the array of args for the Chrome key.
Below are the workarounds for pre and post Ember-CLI 3.
3.0.0 < Ember-CLI >= 2.16.0
/* eslint-env node */
module.exports = {
// ...etc
browser_args: {
Chrome: [
'--no-sandbox', // new arg for 'dev' mode. Below are the default args for 'ci'
'--disable-gpu',
'--headless',
'--remote-debugging-port=0',
'--window-size=1440,900'
]
}
};
Ember-CLI >= 3.0.0
module.exports = {
// ...etc
browser_args: {
Chrome: {
// common args for CI and Dev
all: [
'--disable-gpu',
'--headless',
'--remote-debugging-port=0',
'--window-size=1440,900'
],
// extra required arg for Dev (because it's running inside a container)
dev: '--no-sandbox',
// the default --no-sandbox for Travis CI (that's running inside a container)
ci: [
// --no-sandbox is needed when running Chrome inside a container
process.env.TRAVIS ? '--no-sandbox' : null,
].filter(Boolean)
}
}
}
If you are using an Alpine version, replace all "Chrome" references with "Chromium".
I have a custom Dockerfile based on yours, and my USER is no longer root because of reason X. With tags between 2.16.0 and 3.0.0, ember test -s ends up showing an "operation not permitted" error. How do I make it work?
Versions <= 3.0.0 of this image had a weird issue with Google Chrome and USER in the container. Using a non-root user required a HUGE seccomp profile to be passed to your container with EVERY SINGLE SYSCALL Chrome will or might perform, otherwise it will explode in your face with "operation not permitted".
Since 3.0.1, the container runs as non-root and Chrome is finally working.