Add required files for DreamFactory

This commit is contained in:
David Gomez
2017-03-14 11:51:10 +01:00
commit f249126efd
9 changed files with 649 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
FROM gcr.io/stacksmith-images/minideb:jessie-r11
MAINTAINER Bitnami <containers@bitnami.com>
ENV BITNAMI_APP_NAME=dreamfactory \
BITNAMI_IMAGE_VERSION=2.5.0 \
PATH=/opt/bitnami/mysql/bin/:/opt/bitnami/php/bin/:$PATH
# System packages required
RUN install_packages libssl1.0.0 libaprutil1 libapr1 libc6 libuuid1 libexpat1 libpcre3 libldap-2.4-2 libsasl2-2 libgnutls-deb0-28 zlib1g libp11-kit0 libtasn1-6 libnettle4 libhogweed2 libgmp10 libffi6 libxslt1.1 libtidy-0.99-0 libreadline6 libncurses5 libtinfo5 libmcrypt4 libstdc++6 libpng12-0 libjpeg62-turbo libbz2-1.0 libxml2 libcurl3 libfreetype6 libicu52 libgcc1 libgcrypt20 liblzma5 libidn11 librtmp1 libssh2-1 libgssapi-krb5-2 libkrb5-3 libk5crypto3 libcomerr2 libgpg-error0 libkrb5support0 libkeyutils1 libsybdb5 libpq5 libuv0.10
# Additional modules required
RUN bitnami-pkg unpack apache-2.4.25-0 --checksum 8b46af7d737772d7d301da8b30a2770b7e549674e33b8a5b07480f53c39f5c3f
RUN bitnami-pkg unpack php-7.0.16-1 --checksum 870b6b92ef762fc3a49eeaa71dfa78bacabf50a5fa41f811cdd99a49844d9d9b
RUN bitnami-pkg install libphp-7.0.16-0 --checksum 91548c756818a24b9d5477d2cb09d4eff689a2c6ad51d2ef7cd99370020b6494
RUN bitnami-pkg install mysql-client-10.1.21-3 --checksum 9f636d5c4f0c734290ecbb93b51dd71bb81674fee14c3e517ec4f9440bb26bcb
RUN bitnami-pkg install mongodb-client-3.4.2-1 --checksum 7ab29c774c254b155fdb0ea02ed244d8acd93964edab384df7fce3fd8e544673
RUN bitnami-pkg install redis-client-3.2.8-0 --checksum f4f899bfda566cb3c689a83d1763748a4790c0a8ad3513d82cce1c910f89c5a0
# Install dreamfactory
RUN bitnami-pkg unpack dreamfactory-2.5.0-1 --checksum 0e3077b8e45c4c7a202e712b04f65fc89b2ecd06fc00188f9f2481f28f88cb33
ENV APACHE_HTTP_PORT="80" \
APACHE_HTTPS_PORT="443" \
MARIADB_HOST="mariadb" \
MARIADB_PORT="3306" \
MARIADB_ROOT_USER="root" \
MARIADB_ROOT_PASSWORD="" \
MONGODB_HOST="mongodb" \
MONGODB_PORT="27017" \
REDIS_HOST="redis" \
COPY rootfs /
VOLUME ["/bitnami/dreamfactory", "/bitnami/apache", "/bitnami/php"]
EXPOSE 80 443
ENTRYPOINT ["/app-entrypoint.sh"]
CMD ["nami","start","--foreground","apache"]

View File

@@ -0,0 +1,38 @@
version: '2'
services:
mariadb:
image: 'bitnami/mariadb:latest'
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- 'mariadb_data:/bitnami/mariadb'
redis:
image: 'bitnami/redis:latest'
volumes:
- 'redis_data:/bitnami/redis'
mongodb:
image: 'bitnami/mongodb:latest'
dreamfactory:
image: 'bitnami/dreamfactory:2'
ports:
- '80:80'
- '443:443'
depends_on:
- mariadb
- redis
- mongodb
volumes:
- 'dreamfactory_data:/bitnami/dreamfactory'
- 'apache_data:/bitnami/apache'
- 'php_data:/bitnami/php'
volumes:
mariadb_data:
driver: local
redis_data:
driver: local
dreamfactory_data:
driver: local
apache_data:
driver: local
php_data:
driver: local

View File

@@ -0,0 +1,4 @@
{
"httpPort": "{{$global.env.APACHE_HTTP_PORT}}",
"httpsPort": "{{$global.env.APACHE_HTTPS_PORT}}"
}

View File

@@ -0,0 +1,13 @@
#!/bin/bash -e
. /opt/bitnami/base/functions
. /opt/bitnami/base/helpers
print_welcome_page
check_for_updates &
if [[ "$1" == "nami" && "$2" == "start" ]] || [[ "$1" == "/init.sh" ]]; then
nami_initialize apache php dreamfactory
info "Starting dreamfactory..."
fi
exec tini -- "$@"

View File

@@ -0,0 +1,17 @@
{
"mariadbUser": "{{$global.env.MARIADB_USER}}",
"mariadbPassword": "{{$global.env.MARIADB_PASSWORD}}",
"mariadbHost": "{{$global.env.MARIADB_HOST}}",
"mariadbPort": "{{$global.env.MARIADB_PORT}}",
"mongodbUser": "{{$global.env.MONGODB_USER}}",
"mongodbPassword": "{{$global.env.MONGODB_PASSWORD}}",
"mongodbHost": "{{$global.env.MONGODB_HOST}}",
"mongodbPort": "{{$global.env.MONGODB_PORT}}",
"redisHost": "{{$global.env.REDIS_HOST}}",
"redisPort": "{{$global.env.REDIS_PORT}}",
"redisPassword": "{{$global.env.REDIS_PASSWORD}}",
"smtpHost": "{{$global.env.SMTP_HOST}}",
"smtpPort": "{{$global.env.SMTP_PORT}}",
"smtpUser": "{{$global.env.SMTP_USER}}",
"smtpPassword": "{{$global.env.SMTP_PASSWORD}}"
}

View File

@@ -0,0 +1,13 @@
Copyright 2016 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.

View File

@@ -0,0 +1,452 @@
[![CircleCI](https://circleci.com/gh/bitnami/bitnami-docker-dreamfactory/tree/master.svg?style=shield)](https://circleci.com/gh/bitnami/bitnami-docker-dreamfactory/tree/master)
[![Docker Hub Automated Build](http://container.checkforupdates.com/badges/bitnami/dreamfactory)](https://hub.docker.com/r/bitnami/dreamfactory/)
# What is DreamFactory?
> DreamFactory is an open source REST API for mobile enterprise application developers. Add a REST API to any backend system. Services include SQL, NoSQL, BLOB, email, users, roles, security, and integration. Whether youre building a native or web-based app, DreamFactory developers can focus on creating great front-ends to their apps, then leaving all the backend work to DreamFactory.
https://www.dreamfactory.com/
# TL;DR;
``bash
$ curl -LO https://raw.githubusercontent.com/bitnami/bitnami-docker-dreamfactory/master/docker-compose.yml
$ docker-compose up
```
# Prerequisites
To run this application you need [Docker Engine](https://www.docker.com/products/docker-engine) >= `1.10.0`. [Docker Compose](https://www.docker.com/products/docker-compose) is recommended with a version `1.6.0` or later.
# How to use this image
DreamFactory requires access to a MySQL database or MariaDB database to store information. We'll use our very own [MariaDB image](https://www.github.com/bitnami/bitnami-docker-mariadb) for the database requirements. It also uses our [MongoDB image] (https://www.github.com/bitnami/bitnami-docker-mongodb) and [Redis image] (https://www.github.com/bitnami/bitnami-docker-redis).
## Using Docker Compose
The recommended way to run DreamFactory is using Docker Compose using the following `docker-compose.yml` template:
```yaml
version: '2'
services:
mariadb:
image: bitnami/mariadb:latest
volumes:
- mariadb_data:/bitnami/mariadb
environment:
- ALLOW_EMPTY_PASSWORD=yes
mongodb:
image: 'bitnami/mongodb:latest'
volumes:
- 'mongodb_data:/bitnami/mongodb'
redis:
image: 'bitnami/redis:latest'
volumes:
- 'redis_data:/bitnami/redis'
dreamfactory:
image: bitnami/dreamfactory:latest
depends_on:
- mariadb
- mongodb
- redis
ports:
- '80:80'
- '443:443'
volumes:
- dreamfactory_data:/bitnami/dreamfactory
- apache_data:/bitnami/apache
- php_data:/bitnami/php
volumes:
mariadb_data:
driver: local
mongodb_data:
driver: local
redis_data:
driver: local
dreamfactory_data:
driver: local
apache_data:
driver: local
php_data:
driver: local
```
Launch the containers using:
```bash
$ docker-compose up -d
```
## Using the Docker Command Line
If you want to run the application manually instead of using `docker-compose`, these are the basic steps you need to run:
1. Create a network
```bash
$ docker network create dreamfactory-tier
```
2. Create a volume for MariaDB persistence and create a MariaDB container
```bash
$ docker volume create --name mariadb_data
$ docker run -d --name mariadb -e ALLOW_EMPTY_PASSWORD=yes\
--net dreamfactory-tier \
--volume mariadb_data:/bitnami/mariadb \
bitnami/mariadb:latest
```
3. Create a volume for MongoDB persistence and create a MongoDB container
```bash
$ docker volume create --name mongodb_data
$ docker run -d --name mongodb \
--net dreamfactory-tier \
--volume mongodb_data:/bitnami/mongodb \
bitnami/mongodb:latest
```
4. Create a volume for Redis persistence and create a Redis container
```bash
$ docker volume create --name redis_data
$ docker run -d --name redis \
--net dreamfactory-tier \
--volume redis_data:/bitnami/redis \
bitnami/redis:latest
```
5. Create volumes for DreamFactory persistence and launch the container
```bash
$ docker volume create --name dreamfactory_data
$ docker volume create --name apache_data
$ docker volume create --name php_data
$ docker run -d --name dreamfactory -p 80:80 -p 443:443 \
--net dreamfactory-tier \
--volume dreamfactory_data:/bitnami/dreamfactory \
--volume apache_data:/bitnami/apache \
--volume php_data:/bitnami/php \
bitnami/dreamfactory:latest
```
Access your application at http://your-ip/
## Persisting your application
For persistence of the DreamFactory deployment, the above examples define docker volumes namely `mariadb_data`, `mongodb_data`, `redis_data`, `dreamfactory_data`, `apache_data` and `php_data`. The DreamFactory application state will persist as long as these volumes are not removed.
If avoid inadvertent removal of these volumes you can [mount host directories as data volumes](https://docs.docker.com/engine/userguide/containers/dockervolumes/#mount-a-host-directory-as-a-data-volume). Alternatively you can make use of volume plugins to host the volume data.
### Mount host directories as data volumes with Docker Compose
The following `docker-compose.yml` template demonstrates the use of host directories as data volumes.
```yaml
version: '2'
services:
mariadb:
image: bitnami/mariadb:latest
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- /path/to/mariadb-persistence:/bitnami/mariadb
mongodb:
image: 'bitnami/mongodb:latest'
volumes:
- '/path/to/your/local/mongodb_data:/bitnami/mongodb'
redis:
image: 'bitnami/redis:latest'
volumes:
- '/path/to/your/local/redis_data:/bitnami/redis'
dreamfactory:
image: bitnami/dreamfactory:latest
depends_on:
- mariadb
- mongodb
- redis
ports:
- '80:80'
- '443:443'
volumes:
- /path/to/dreamfactory-persistence:/bitnami/dreamfactory
- /path/to/apache-persistence:/bitnami/apache
- /path/to/php-persistence:/bitnami/php
```
### Mount host directories as data volumes using the Docker command line
1. Create a network (if it does not exist)
```bash
$ docker network create dreamfactory-tier
```
2. Create a MariaDB container with host volume
```bash
$ docker run -d --name mariadb -e ALLOW_EMPTY_PASSWORD=yes \
--net dreamfactory-tier \
--volume /path/to/mariadb-persistence:/bitnami/mariadb \
bitnami/mariadb:latest
```
3. Create a MongoDB container with host volume
```bash
$ docker run -d --name mongodb \
--net dreamfactory-tier \
--volume /path/to/mongodb-persistence:/bitnami/mongodb \
bitnami/mongodb:latest
```
4. Create a Redis container with host volume
```bash
$ docker run -d --name redis \
--net dreamfactory-tier \
--volume /path/to/redis-persistence:/bitnami/redis \
bitnami/redis:latest
```
5. Create the DreamFactory the container with host volumes
```bash
$ docker run -d --name dreamfactory -p 80:80 -p 443:443 \
--net dreamfactory-tier \
--volume /path/to/dreamfactory-persistence:/bitnami/dreamfactory \
--volume /path/to/apache-persistence:/bitnami/apache \
--volume /path/to/php-persistence:/bitnami/php \
bitnami/dreamfactory:latest
```
# Upgrading DreamFactory
Bitnami provides up-to-date versions of MariaDB, MongoDB, Redis and DreamFactory, including security patches, soon after they are made upstream. We recommend that you follow these steps to upgrade your container. We will cover here the upgrade of the DreamFactory container. For the MariaDB upgrade see https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#upgrade-this-image. For the MongoDB upgrade see https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#upgrade-this-image. For the Redis upgrade see https://github.com/bitnami/bitnami-docker-redis/blob/master/README.md#upgrade-this-image
The `bitnami/dreamfactory:latest` tag always points to the most recent release. To get the most recent release you can simple repull the `latest` tag from the Docker Hub with `docker pull bitnami/dreamfactory:latest`. However it is recommended to use [tagged versions](https://hub.docker.com/r/bitnami/dreamfactory/tags/).
Get the updated image:
```
$ docker pull bitnami/dreamfactory:latest
```
## Using Docker Compose
1. Stop the running DreamFactory container
```bash
$ docker-compose stop dreamfactory
```
2. Remove the stopped container
```bash
$ docker-compose rm dreamfactory
```
3. Launch the updated DreamFactory image
```bash
$ docker-compose start dreamfactory
```
## Using Docker command line
1. Stop the running DreamFactory container
```bash
$ docker stop dreamfactory
```
2. Remove the stopped container
```bash
$ docker rm dreamfactory
```
3. Launch the updated DreamFactory image
```bash
$ docker run -d --name dreamfactory -p 80:80 -p 443:443 \
--net dreamfactory-tier \
--volume dreamfactory_data:/bitnami/dreamfactory \
--volume apache_data:/bitnami/apache \
--volume php_data:/bitnami/php \
bitnami/dreamfactory:latest
```
> **NOTE**:
>
> The above command assumes that local docker volumes are in use. Edit the command according to your usage.
# Configuration
## Environment variables
The DreamFactory instance can be customized by specifying environment variables on the first run. The following environment values are provided to custom DreamFactory:
- `MARIADB_USER`: Root user for the MariaDB database. Default: **root**
- `MARIADB_PASSWORD`: Root password for the MariaDB.
- `MARIADB_HOST`: Hostname for MariaDB server. Default: **mariadb**
- `MARIADB_PORT`: Port used by MariaDB server. Default: **3306**
- `MONGODB_HOST`: Hostname for Mongodb server. Default: **mongodb**
- `MONGODB_PORT`: Port used by Mongodb server. Default: **27017**
- `REDIS_HOST`: Hostname for Redis. Default: **redis**
- `REDIS_PORT`: Port used by Redis. Default: **6379**
- `REDIS_PASSWORD`: Password for Redis.
- `SMTP_HOST`: Hostname for the SMTP server (necessary for sending e-mails from the application).
- `SMTP_PORT`: Port for the SMTP server.
- `SMTP_USER`: Username for the SMTP server.
- `SMTP_PASSWORD`: SMTP account password.
### Specifying Environment variables using Docker Compose
```yaml
version: '2'
services:
mariadb:
image: bitnami/mariadb:latest
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- mariadb_data:/bitnami/mariadb
mongodb:
image: bitnami/mongodb:latest
volumes:
- mongodb_data:/bitnami/mongodb
redis:
image: bitnami/redis:latest
volumes:
- redis_data:/bitnami/mariadb
dreamfactory:
image: bitnami/dreamfactory:latest
depends_on:
- mariadb
- mongodb
- redis
ports:
- '80:80'
- '443:443'
environment:
- DREAMFACTORY_PASSWORD=my_password
volumes:
- dreamfactory_data:/bitnami/dreamfactory
- apache_data:/bitnami/apache
- php_data:/bitnami/php
volumes:
mariadb_data:
driver: local
mongodb_data:
driver: local
redis_data:
driver: local
dreamfactory_data:
driver: local
apache_data:
driver: local
php_data:
driver: local
```
### Specifying Environment variables on the Docker command line
```bash
$ docker run -d --name dreamfactory -p 80:80 -p 443:443 \
--net dreamfactory-tier \
--env DREAMFACTORY_PASSWORD=my_password \
--volume dreamfactory_data:/bitnami/dreamfactory \
--volume apache_data:/bitnami/apache \
--volume php_data:/bitnami/php \
bitnami/dreamfactory:latest
```
# Backing up your application
To backup your application data follow these steps:
## Backing up using Docker Compose
1. Stop the DreamFactory container:
```bash
$ docker-compose stop dreamfactory
```
2. Copy the DreamFactory, Apache and PHP data
```bash
$ docker cp $(docker-compose ps -q dreamfactory):/bitnami/dreamfactory/ /path/to/backups/dreamfactory/latest/
$ docker cp $(docker-compose ps -q dreamfactory):/bitnami/apache/ /path/to/backups/apache/latest/
$ docker cp $(docker-compose ps -q dreamfactory):/bitnami/php/ /path/to/backups/php/latest/
```
3. Start the DreamFactory container
```bash
$ docker-compose start dreamfactory
```
## Backing up using the Docker command line
1. Stop the DreamFactory container:
```bash
$ docker stop dreamfactory
```
2. Copy the DreamFactory, Apache and PHP data
```bash
$ docker cp dreamfactory:/bitnami/dreamfactory/ /path/to/backups/dreamfactory/latest/
$ docker cp dreamfactory:/bitnami/apache/ /path/to/backups/apache/latest/
$ docker cp dreamfactory:/bitnami/php/ /path/to/backups/php/latest/
```
3. Start the DreamFactory container
```bash
$ docker start dreamfactory
```
# Restoring a backup
To restore your application using backed up data simply mount the folder with DreamFactory, Apache and PHP data in the container. See [persisting your application](#persisting-your-application) section for more info.
# Contributing
We'd love for you to contribute to this container. You can request new features by creating an [issue](https://github.com/bitnami/bitnami-docker-dreamfactory/issues), or submit a [pull request](https://github.com/bitnami/bitnami-docker-dreamfactory/pulls) with your contribution.
# Issues
If you encountered a problem running this container, you can file an [issue](https://github.com/bitnami/bitnami-docker-dreamfactory/issues). For us to provide better support, be sure to include the following information in your issue:
- Host OS and version
- Docker version (`docker version`)
- Output of `docker info`
- Version of this container (`echo $BITNAMI_IMAGE_VERSION` inside the container)
- The command you used to run the container, and any relevant output you saw (masking any sensitive information)
# License
Copyright 2015-2016 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.

View File

@@ -0,0 +1,32 @@
machine:
services:
- docker
environment:
RELEASE_SERIES_LIST: 2
LATEST_STABLE: 2
IMAGE_NAME: dreamfactory
CHART_NAME: dreamfactory
CHART_REPO: https://github.com/kubernetes/charts
DOCKER_PROJECT: bitnami
QUAY_PROJECT: bitnami
GCLOUD_PROJECT: bitnami-containers
dependencies:
override:
- docker info
- gcloud version
- curl -sL https://raw.githubusercontent.com/bitnami/test-infra/master/circle/docker-pull-cache.sh | bash -
test:
override:
- curl -sL https://raw.githubusercontent.com/bitnami/test-infra/master/circle/docker-image-test.sh | bash -
deployment:
development:
branch: master
commands:
- curl -sL https://raw.githubusercontent.com/bitnami/test-infra/master/circle/docker-development-image.sh | bash -
release:
tag: /^[0-9].*-r[0-9]+$/
commands:
- curl -sL https://raw.githubusercontent.com/bitnami/test-infra/master/circle/docker-release-image.sh | bash -

View File

@@ -0,0 +1,38 @@
version: '2'
services:
mariadb:
image: 'bitnami/mariadb:latest'
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- 'mariadb_data:/bitnami/mariadb'
redis:
image: 'bitnami/redis:latest'
volumes:
- 'redis_data:/bitnami/redis'
mongodb:
image: 'bitnami/mongodb:latest'
dreamfactory:
image: 'bitnami/dreamfactory:latest'
ports:
- '80:80'
- '443:443'
depends_on:
- mariadb
- redis
- mongodb
volumes:
- 'dreamfactory_data:/bitnami/dreamfactory'
- 'apache_data:/bitnami/apache'
- 'php_data:/bitnami/php'
volumes:
mariadb_data:
driver: local
redis_data:
driver: local
dreamfactory_data:
driver: local
apache_data:
driver: local
php_data:
driver: local