162 lines
7.0 KiB
Markdown
162 lines
7.0 KiB
Markdown
[](https://circleci.com/gh/bitnami/bitnami-docker-express/tree/master)
|
|
|
|
# Bitnami Express Development Container
|
|
|
|
## TL;DR;
|
|
|
|
### Local workspace
|
|
|
|
```bash
|
|
$ mkdir ~/myapp && cd ~/myapp
|
|
$ curl -LO https://raw.githubusercontent.com/bitnami/bitnami-docker-express/master/docker-compose.yml
|
|
$ docker-compose up
|
|
```
|
|
|
|
## Why use Bitnami Images?
|
|
|
|
* Bitnami closely tracks upstream source changes and promptly publishes new versions of this image using our automated systems.
|
|
* With Bitnami images the latest bug fixes and features are available as soon as possible.
|
|
* Bitnami containers, virtual machines and cloud images use the same components and configuration approach - making it easy to switch between formats based on your project needs.
|
|
* Bitnami images are built on CircleCI and automatically pushed to the Docker Hub.
|
|
* All our images are based on [minideb](https://github.com/bitnami/minideb) a minimalist Debian based container image which gives you a small base container image and the familiarity of a leading linux distribution.
|
|
|
|
# Supported tags and respective `Dockerfile` links
|
|
|
|
> NOTE: Debian 8 images have been deprecated in favor of Debian 9 images. Bitnami will not longer publish new Docker images based on Debian 8.
|
|
|
|
Learn more about the Bitnami tagging policy and the difference between rolling tags and immutable tags [in our documentation page](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/).
|
|
|
|
|
|
* [`4-ol-7`, `4.16.3-ol-7-r66` (4/ol-7/Dockerfile)](https://github.com/bitnami/bitnami-docker-codiad/blob/4.16.3-ol-7-r66/4/ol-7/Dockerfile)
|
|
* [`4-debian-9`, `4.16.3-debian-9-r58`, `4`, `4.16.3`, `4.16.3-r58`, `latest` (4/debian-9/Dockerfile)](https://github.com/bitnami/bitnami-docker-codiad/blob/4.16.3-debian-9-r58/4/debian-9/Dockerfile)
|
|
|
|
Subscribe to project updates by watching the [bitnami/codiad GitHub repo](https://github.com/bitnami/bitnami-docker-codiad).
|
|
|
|
## Introduction
|
|
|
|
[Express.js](http://expressjs.org/), or simply Express, is a web application framework for [Node.js](https://nodejs.org), released as free and open-source software under the [MIT License](https://github.com/nodejs/node/blob/master/LICENSE).
|
|
|
|
The Bitnami Express Development Container has been carefully engineered to provide you and your team with a highly reproducible Express development environment. We hope you find the Bitnami Express Development Container useful in your quest for world domination. Happy hacking!
|
|
|
|
[Learn more about Bitnami Development Containers.](https://docs.bitnami.com/containers/how-to/use-bitnami-development-containers/)
|
|
|
|
## Getting started
|
|
|
|
The quickest way to get started with the Bitnami Express Development Container is using [docker-compose](https://docs.docker.com/compose/).
|
|
|
|
Begin by creating a directory for your Express application:
|
|
|
|
```bash
|
|
mkdir ~/myapp
|
|
cd ~/myapp
|
|
```
|
|
|
|
Download the [docker-compose.yml](https://raw.githubusercontent.com/bitnami/bitnami-docker-express/master/docker-compose.yml) file in the application directory:
|
|
|
|
```bash
|
|
$ curl -LO https://raw.githubusercontent.com/bitnami/bitnami-docker-express/master/docker-compose.yml
|
|
```
|
|
|
|
Finally launch the Express application development environment using:
|
|
|
|
```bash
|
|
$ docker-compose up
|
|
```
|
|
|
|
Among other things, the above command creates a container service, named `myapp`, for Express development and bootstraps a new Express application in the application directory. You can use your favorite IDE for developing the application.
|
|
|
|
> **Note**
|
|
>
|
|
> If the application directory contained the source code of an existing Express application, the Bitnami Express Development Container would load the existing application instead of bootstrapping a new one.
|
|
|
|
After the Node application server has been launched in the `myapp` service, visit http://localhost:3000 in your favorite web browser and you'll be greeted by the default Express welcome page.
|
|
|
|
In addition to the Express Development Container, the [docker-compose.yml](https://raw.githubusercontent.com/bitnami/bitnami-docker-express/master/docker-compose.yml) file also configures a MongoDB service to serve as the NoSQL database backend of your Express application.
|
|
|
|
## Executing commands
|
|
|
|
Commands can be launched inside the `myapp` Express Development Container with `docker-compose` using the [exec](https://docs.docker.com/compose/reference/exec/) command.
|
|
|
|
> **Note**:
|
|
>
|
|
> The `exec` command was added to `docker-compose` in release [1.7.0](https://github.com/docker/compose/blob/master/CHANGELOG.md#170-2016-04-13). Please ensure that you're using `docker-compose` version `1.7.0` or higher.
|
|
|
|
The general structure of the `exec` command is:
|
|
|
|
```bash
|
|
$ docker-compose exec <service> <command>
|
|
```
|
|
|
|
, where `<service>` is the name of the container service as described in the `docker-compose.yml` file and `<command>` is the command you want to launch inside the service.
|
|
|
|
Following are a few examples of launching some commonly used Express development commands inside the `myapp` service container.
|
|
|
|
- Load the Node.js REPL:
|
|
|
|
```bash
|
|
$ docker-compose exec myapp node
|
|
```
|
|
|
|
- List installed NPM modules:
|
|
|
|
```bash
|
|
$ docker-compose exec myapp npm ls
|
|
```
|
|
|
|
- Install a NPM module:
|
|
|
|
```bash
|
|
$ docker-compose exec myapp npm install bootstrap --save
|
|
$ docker-compose restart myapp
|
|
```
|
|
|
|
## Connecting to Database
|
|
|
|
Express by default does not require a database connection to work but we provide a running and configured MongoDB service and an example file `config/mongodb.js` with some insights for how to connect to it.
|
|
|
|
You can use [Mongoose](http://mongoosejs.com/) ODM in your application to model your application data.
|
|
|
|
## Going to Production
|
|
|
|
The Express Development Container generates a Dockerfile in your working directory. This can be used to create a production-ready container image consisting of your application code and its dependencies.
|
|
|
|
1. Build your Docker image
|
|
|
|
```bash
|
|
$ docker build -t myregistry/myapp:1.0.0
|
|
```
|
|
|
|
2. Push to an image registry
|
|
|
|
```bash
|
|
$ docker push myregistry/myapp:1.0.0
|
|
```
|
|
|
|
3. Update orchestration files to reference the pushed image
|
|
|
|
## Issues
|
|
|
|
If you encountered a problem running this container, you can file an [issue](../../issues/new). For us to provide better support, be sure to include the following information in your issue:
|
|
|
|
- Host OS and version (`uname -a`)
|
|
- Docker version (`docker version`)
|
|
- Docker info (`docker info`)
|
|
- Docker image version (`echo $BITNAMI_IMAGE_VERSION` inside the container)
|
|
- Steps to reproduce the issue.
|
|
|
|
## License
|
|
|
|
Copyright (c) 2015-2018 Bitnami
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|