A Docker image for running Angular CLI in a container.
- Eliminate the need to manually confirm that you are running a version of Node.js/npm that is compatible with your version of Angular CLI.
- Ensure that all developers are running the same version of the build tools.
- Ensure that the build machine is running the same version of the build tools as the developers.
- Make switching between projects with different versions of the build tools transparent to the developers.
- Ensure that builds are reproducible.
-
Create a new Angular CLI project:
docker run -it --rm -v $(pwd):/code --entrypoint ng samherrmann/angular-cli new my-app
-
Copy the npm.sh script into your project's root directory.
- Change the
latest
version tag inside thenpm.sh
script to the actual version of the image (Ex: Replacelatest
with1.6.2
). - Commit it to your version control system.
- Change the
-
Add the following configuration to
angular-cli.json
to make the app accessible from the browser on the host machine:"defaults": { "serve": { "host": "0.0.0.0" } }
-
Modify
karma.conf.js
to use headless Chrome:browsers: ['customChrome'], customLaunchers: { customChrome: { base: 'ChromiumHeadless', flags: ['--headless', '--no-sandbox'] } }
-
Modify
protractor.conf.js
to use headless Chrome:chromeDriver: '/usr/bin/chromedriver', capabilities: { 'browserName': 'chrome', chromeOptions: { args: ['--headless', '--no-sandbox'] } }
-
Modify the
e2e
script inpackage.json
to run e2e tests without updating drivers:"e2e": "ng e2e --webdriver-update=false",
Execute Angular CLI commands:
./npm.sh run ng g m my-module
./npm.sh run ng g c my-module/my-component
Execute npm
commands:
./npm.sh install <my-new-lib>
./npm.sh start
./npm.sh run lint
./npm.sh run test
./npm.sh run e2e
Run the ./build.sh
script to build an image.
Run the ./publish.sh
script to push an image to Docker Hub.