All Projects → danlynn → Ember Cli

danlynn / Ember Cli

Licence: mit
ember-cli docker image providing a complete development environment

Projects that are alternatives of or similar to Ember Cli

Ember Cli Page Object
This ember-cli addon eases the construction of page objects on your acceptance and integration tests
Stars: ✭ 272 (+202.22%)
Mutual labels:  ember-cli
Rfcs
RFCs for changes to Ember
Stars: ✭ 731 (+712.22%)
Mutual labels:  ember-cli
Ember Cli Diff
See the changes between new ember apps
Stars: ✭ 32 (-64.44%)
Mutual labels:  ember-cli
Ember Cli Typescript
Use TypeScript in your Ember.js apps!
Stars: ✭ 346 (+284.44%)
Mutual labels:  ember-cli
Sharedrop
Easy P2P file transfer powered by WebRTC - inspired by Apple AirDrop
Stars: ✭ 5,222 (+5702.22%)
Mutual labels:  ember-cli
Ember Cli Raygun
Stars: ✭ 13 (-85.56%)
Mutual labels:  ember-cli
Ember Exam
Run your tests with randomization, splitting, and parallelization for beautiful tests.
Stars: ✭ 262 (+191.11%)
Mutual labels:  ember-cli
Ember Cli Bundle Analyzer
Analyze the size and contents of your Ember app's bundles
Stars: ✭ 78 (-13.33%)
Mutual labels:  ember-cli
Ember Cli Deploy
A deployment pipeline for Ember CLI apps
Stars: ✭ 569 (+532.22%)
Mutual labels:  ember-cli
Ember Cli Updater
ember-cli addon to help you update your ember-cli application or addon.
Stars: ✭ 32 (-64.44%)
Mutual labels:  ember-cli
Ember Decorators
Useful decorators for Ember applications.
Stars: ✭ 360 (+300%)
Mutual labels:  ember-cli
Ember Engines
Composable Ember applications for ambitious user experiences
Stars: ✭ 484 (+437.78%)
Mutual labels:  ember-cli
Aws Mobilehub Ember
Serverless example mobile web application for building a Serverless EmberJS based web application using AWS JavaScript SDK, and MobileHub.
Stars: ✭ 15 (-83.33%)
Mutual labels:  ember-cli
Ember Cli
The Ember.js command line utility
Stars: ✭ 3,314 (+3582.22%)
Mutual labels:  ember-cli
Ember Simple Auth Auth0
Auth0 + lock.js, built on ember-simple-auth
Stars: ✭ 53 (-41.11%)
Mutual labels:  ember-cli
Ember Twiddle
JSFiddle type thing for ember-cli style code
Stars: ✭ 269 (+198.89%)
Mutual labels:  ember-cli
Ember Cli Scss Lint
An ember-cli addon to integrate sass-lint for standards adherence and improved style consistency
Stars: ✭ 7 (-92.22%)
Mutual labels:  ember-cli
Ember Cli Stripe
Stripe checkout for Ember
Stars: ✭ 84 (-6.67%)
Mutual labels:  ember-cli
Ember Cli Coffeescript
Adds precompilation of CoffeeScript files and all the basic generation types to the ember generate command.
Stars: ✭ 72 (-20%)
Mutual labels:  ember-cli
Mber
Fast and minimal Ember.js CLI alternative, without broccoli.
Stars: ✭ 30 (-66.67%)
Mutual labels:  ember-cli

ember-cli logo

This image contains everything you need to have a working development environment for ember-cli. The container's working dir is /myapp so that you can setup a volume mapping your project dir to /myapp in the container. (MIT License)

stars pulls automated automated MIT License

ember-cli 3.25.2 + node 14.16.0/15.11.0 + npm 6.14.11/7.6.0 + bower 1.8.8 + yarn 1.22.5/1.22.5 + chrome 89.0.4389.82 + watchman 4.9.0

Supported tags and respective Dockerfile links

This image was originally based on: geoffreyd/ember-cli (hat tip)

Example Ember Octane app using docker-compose

ember octane quick start guide tutorial

This example runs through the Quick Start ember octane guide tutorial. It follows the Quick Start instructions at ember-cli-docker-compose-template for using the danlynn/ember-cli docker image with docker-compose.

Click here to view the video full-size and with playback controls.

How to use

The absolutely easiest way to use this ember-cli docker image is to use docker-compose. I've put together a git repo that contains a stub ember-cli docker-compose template project that makes this a snap! Full details of the optimized docker-compose environment for developing ember-cli project can be found in that repo's README.

Basically, it creates a new project directory with the following files:

ember-project
  docker-compose.yml
  README-template.md
  bash
  ember
  serve

The docker-compose.yml is configured to use this danlynn/ember-cli docker image from dockerhub and looks like this:

version: '2'

services:
  ember:
    image: danlynn/ember-cli:latest
    volumes:
      - .:/myapp
      - .bash_history:/root/.bash_history
      - node_modules:/myapp/node_modules
    tmpfs:
      - /myapp/tmp
    ports:
      - "4200:4200"
      - "7020:7020"
      - "7357:7357"

volumes:
  node_modules:

The bash, ember, and serve commands are shortcuts for performing the most common ember dev tasks.

Quick start instructions:

Copy and run the following 3 lines in your terminal to create a new ember app named 'ember-project' and then host it on http://locahost:4200:

$ proj_dir='ember-project' && curl -Ls https://github.com/danlynn/ember-cli-docker-compose-template/archive/master.zip > "$proj_dir.zip" && unzip -qq -j "$proj_dir.zip" -d "$proj_dir" && rm "$proj_dir.zip" && cd "$proj_dir" && mv README.md README-template.md && ls -l
$ ./ember init
$ ./serve

Replace the "ember-project" at the beginning with the name to use for the new project dir. This first line will create a new directory named "ember-project" populated with the contents of the ember-cli-docker-compose-template repo from github then cd into that directory ready to use. The last 2 lines are common commands that use the 'shortcuts' to run the ember command in the container and then start the ember server.

Slightly more detailed instructions:

More detailed usage instructions can be found in the ember-cli docker-compose template repo README.

Straight docker usage

You can ignore docker-compose completely and simply use straight docker commands to interact with your ember project in the container.

Command Usage for docker run

Basically put docker run --rm -ti -v $(pwd):/myapp danlynn/ember-cli:3.25.2 before any command you run.

Example:

$ docker run --rm -ti -v $(pwd):/myapp danlynn/ember-cli:3.25.2 npm install
$ docker run --rm -ti -v $(pwd):/myapp danlynn/ember-cli:3.25.2 bower --allow-root install bootstrap
$ docker run --rm -ti -v $(pwd):/myapp danlynn/ember-cli:3.25.2 ember generate model user
$ docker run --rm -ti -v $(pwd):/myapp -p 4200:4200 -p 7020:7020 -p 7357:7357 danlynn/ember-cli:3.25.2

Note that the --rm prevents a bunch of stopped containers from accumulating from these one-off commands. They take up space and since pretty much any change made by these commands will only affect what is in your project dir (/myapp in the container), there is no need to keep them around.

Launching bash shell then running commands directly

You could simply launch into a bash shell and execute the commands in the normal fashion:

$ mkdir new_ember_app
$ cd new_ember_app
$ docker run --rm -it -v $(pwd):/myapp -p 4200:4200 -p 7020:7020 -p 7357:7357 danlynn/ember-cli:3.25.2 bash

[email protected]:/myapp# ember init
[email protected]:/myapp# ember init --yarn
[email protected]:/myapp# npm install
[email protected]:/myapp# bower --allow-root install
[email protected]:/myapp# ember server
[email protected]:/myapp# ember test
[email protected]:/myapp# ember test --server

Note that bash had to be launched with -p 4200:4200 -p 7020:7020 in order to be able to access the ember server on port 4200 and enable Livereload on port 7020. The -p 7357:7357 is needed if you intend to run ember test --server.

Also note that the npm install is done automagically by the ember init command on newer versions of ember. Also, bower --allow-root install is not used as much anymore. There are no bower packages or dependencies in the default project created by ember init. Using the --yarn option on ember init --yarn will use yarn instead of npm to install dependencies.

Also note that both npm and bower are pretty much being replaced by yarn. Newer versions of ember-cli have built-in support for yarn on many commands. Yarn works smoothly in place of npm. Yarn can also replace your use of bower. However, even though yarn used to support bower file formats directly, it no longer does. You should instead use yarn's support for installing front-end web components.

Troubleshooting

  • Watchman watch limit error

    While the ember-cli server is running in the docker container, it will detect changes to the ember webapp files. These changes will automagically be detected and the associated files will be recompiled and the browser will auto-reload showing the changes.

    Note, however, that if you get an error something like:

    ember_1 | Error: A non-recoverable condition has triggered.  Watchman needs your help!
    ember_1 | The triggering condition was at timestamp=1450119416: inotify-add-watch(/myapp/node_modules/ember-cli/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexify/node_modules/readable-stream/doc) -> The user limit on the total number of inotify watches was reached; increase the fs.inotify.max_user_watches sysctl
    ember_1 | All requests will continue to fail with this message until you resolve
    ember_1 | the underlying problem.  You will find more information on fixing this at
    ember_1 | https://facebook.github.io/watchman/docs/troubleshooting.html#poison-inotify-add-watch
    

    This means that watchman is running out of resources trying to track all the files in a large ember app. To increase the fs.inotify.max_user_watches count to something that is more appropriate for an ember app, stop your docker-compose server by hitting ctrl-c (or docker-compose stop server if necessary) then execute the following command:

    $ docker run --rm --privileged danlynn/ember-cli:3.7.1 sysctl -w fs.inotify.max_user_watches=524288
    

    Note that this will affect all containers that run on the current docker-machine from this point forward because fs.inotify.max_user_watches is a system-wide setting. This shouldn't be a big deal however, so go ahead and give it a try. Then start the docker-compose service again with

    $ docker-compose up
    
  • Ember build system crashing

    Some IDEs (Intelli-J) have features that can wreak havoc with the build system. If the IDE quickly writes temp files into the project tree then deletes them before or while the Ember build system is processing the changes then the build system can crash.

    When this happens, you will see something like the following in the build console:

    ember_1  | file deleted templates/application.hbs___jb_old___
    ember_1  | file deleted templates/application.hbs___jb_tmp___
    ember_1  | file changed templates/application.hbs
    ember_1  | Cannot find module 'broccoli/package'
    ember_1  | 
    ember_1  | 
    ember_1  | Stack Trace and Error Report: /tmp/error.dump.644b7ae2dd9e56d5eef7b92b898c1235.log
    ember_1  | TypeError: Cannot read property 'broccoliNode' of undefined
    

    The fix is to change your IDE's settings in order to avoid this behavior. For Intelli-J IDEs, it is the "safe write" feature that causes additional transient files to be generated and quickly deleted upon every save. This feature can be turned OFF without affecting IDE behavior by going to Settings > Appearance & Behavior > System Settings and then unchecking the 'Use "safe write" (save changes to a temporary file first)' checkbox. After turning this feature OFF, you can make changes to your files and the ember build system will pick them up and perform builds without further issue.

Change Log

Important Change in ember-cli:3.1.1

The test server port exposed in the Dockerfile has changed from 5779 to 7357. I know, they should make up their mind. The default exposed ports for this image will follow along with the default ports used by ember-cli. So, make sure that you now expose that port if you want to hit the test server on its new port:

docker run --rm -ti -v $(pwd):/myapp -p 4200:4200 -p 7020:7020 -p 7357:7357 danlynn/ember-cli:3.1.1 bash
   
[email protected]:/myapp# ember test --server

Important Change in ember-cli:3.0.0

PhantomJS support is not longer supported in Ember 3.0.0. Thus, it has been removed from the docker image. Ember 3.0.0 has moved away from script tag driven development. Thus, it no longer supports Bower in that context. However, your own projects may still be using Bower to pull in dependencies. Therefore, we have retained Bower 1.8.2 in the docker image.

It is notable that Ember 3.0.0 also drops support for IE9 and IE10. Furthermore, IE11 is only supported as a target if ember env (EMBER_ENV) is 'production' -OR- if the new CI env var is truthy. Therefore, if you want to support IE11 in 'development' or 'test' modes then include this env var in your docker commands with --env CI=true like:

docker run --env CI=true --rm -ti -v $(pwd):/myapp -p 4200:4200 -p 7020:7020 -p 5779:5779 danlynn/ember-cli:3.0.0 bash
   
[email protected]:/myapp# ember test

Similarly, you may update your docker-compose.yml file to include this env var like:

   server:
     image: danlynn/ember-cli:3.0.0
     environment:
       CI: true
     volumes:
       - .:/myapp
     ports:
       - "4200:4200"
       - "7020:7020"
       - "5779:5779"

Important Change in ember-cli:2.17.0

Node has moved the LTS tag from 6.11 to 8.9. Since ember always supports the LTS version of node, we have bumped the version of node on the 'latest' docker hub tag to 8.9. As always, the latest current version of node is also available tagged as '2.17.0-node_9.2'.

Important Change in ember-cli:2.16.2

  1. The test server port 5779 is now exposed in the Dockerfile. In order to be able to hit the test server on your host OS, you will still need to expose the port in either your docker-compose.yml file or in your docker command line - just like you do with the ember server and livereload.

    docker run --rm -ti -v $(pwd):/myapp -p 4200:4200 -p 7020:7020 -p 5779:5779 danlynn/ember-cli:2.16.2 bash
    
    [email protected]:/myapp# ember test --server
    
  2. Yarn is now part of the docker image. You can still rely on npm and bower to install your dependencies. But, now you have the choice of using the shiny new yarn instead.

    docker run --rm -ti -v $(pwd):/myapp -p 4200:4200 -p 7020:7020 -p 5779:5779 danlynn/ember-cli:2.16.2 bash
    
    [email protected]:/myapp# ember init --yarn
    [email protected]:/myapp# ember install ember-cli-mirage --yarn
    

Important Change in ember-cli:2.15.0

Since ember-cli 2.15.0 now uses headless chrome by default on new projects when running ember test, google-chrome is now installed in addition to phantomjs. Existing projects will continue to run tests just fine with their testem.js configured for phantomjs. Also note that we have switched to installing the official phantomjs binary releases.

As of ember-cli:2.15.0, the default 'latest' docker tag will now always use the LTS (long term support) version of node (as recommended by the ember-cli project). From this point forward, there will be the following tagged releases:

  • latest - using the latest version of ember-cli and the LTS version of node. This version will also be tagged with the LTS node version like: 2.15.0-node_6.11. Additionally, this version will be tagged with the ember-cli version like: 2.15.0.
  • A second tagged release will be provided with each new ember-cli release that uses the current node release with the latest features. It will be tagged like: 2.15.0-node_8.4.

Important Change in ember-cli:2.14.2

As of ember-cli:2.14.2, this image has changed the default 'latest' docker tag to always use the most up-to-date version of node. Previously, 'latest' was stuck at an old "stable" version of node which has proven to be less than stable with newer versions of ember. Thus, we are dropping the old node 4.8.4 support. From now on, the 'latest' image will be using the latest version of node that works well with ember-cli. Older versions of node will be supported in alternate build tags (like 'ember-cli-2.14.2-node_6.11'). Note that this release has also updated watchman from version 3.5.1 to 4.7.0. However, phantomjs has dropped back to 2.1.1 for node 8.2.1 since the latest version has build issues with the latest node.

Important Change in ember-cli:2.11.1

As of ember-cli:2.11.1, ember-cli livereload listens on port 7020 by default insteadof 49152. Dockerfile now exposes 49153.

Important Change in ember-cli:2.10.0

As of ember-cli:2.10.0, this image has changed its ENTRYPOINT to the docker convention of /bin/sh -c. This means that if you have any shell scripts which assume the previous ENTRYPOINT of /usr/local/bin/ember then you will need to update them. The default CMD is now ember server which means that the syntax for most critical action of launching the server is unchanged. However, other actions may need to be updated.

Example Changes To Common Actions

Launch ember server (unchanged):

OLD: $ docker run -ti --rm -v $(pwd):/myapp -p 4200:4200 -p 7020:7020 danlynn/ember-cli:2.9.1
NEW: $ docker run -ti --rm -v $(pwd):/myapp -p 4200:4200 -p 7020:7020 danlynn/ember-cli:3.25.2

Run ember tests:

OLD: $ docker run -ti --rm -v $(pwd):/myapp danlynn/ember-cli:2.9.1 test
NEW: $ docker run -ti --rm -v $(pwd):/myapp danlynn/ember-cli:3.25.2 ember test

Launch bash shell:

OLD: $ docker run -ti --rm -v $(pwd):/myapp --entrypoint=/bin/bash danlynn/ember-cli:2.9.1
NEW: $ docker run -ti --rm -v $(pwd):/myapp danlynn/ember-cli:3.25.2 bash
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].