Note: This repo is no longer maintained and will be deprecated. Please refer to DockerHub for the latest version.
Docker container for DreamFactory 2.5.0 using Ubuntu 16.04, PHP 7.1 and NGINX. This container includes following PHP extensions.
calendar cassandra Core
couchbase ctype curl
date dom exif
fileinfo filter ftp
gettext hash iconv
json ldap libxml
mbstring mcrypt mongodb
mysqli mysqlnd openssl
pcntl pcre pcs
PDO pdo_dblib pdo_mysql
pdo_pgsql pdo_sqlite pgsql
Phar posix readline
Reflection session shmop
SimpleXML soap sockets
SPL sqlite3 standard
sysvmsg sysvsem sysvshm
tokenizer v8js wddx
xml xmlreader xmlwriter
xsl zip Zend OPcache
zlib
- See this table
docker pull dreamfactorysoftware/df-docker
docker run -d --name df-mysql -e "MYSQL_ROOT_PASSWORD=root" -e "MYSQL_DATABASE=dreamfactory" -e "MYSQL_USER=df_admin" -e "MYSQL_PASSWORD=df_admin" mysql
docker run -d --name df-redis redis
If your database and redis runs inside another container you can simply link it under the name db
and rd
respectively.
docker run -d --name df-web -p 127.0.0.1:80:80 -e "DB_HOST=db" -e "DB_USERNAME=df_admin" -e "DB_PASSWORD=df_admin" -e "DB_DATABASE=dreamfactory" -e "REDIS_HOST=rd" -e "REDIS_DATABASE=0" -e "REDIS_PORT=6379" --link df-mysql:db --link df-redis:rd dreamfactorysoftware/df-docker
127.0.0.1 dreamfactory.app
Go to 127.0.0.1 in your browser. It will take some time the first time. You will be asked to create your first admin user.
The easiest way to configure the DreamFactory application is to use docker-compose.
cd ~/repos
(or wherever you want the clone of the repo to be)
git clone https://github.com/dreamfactorysoftware/df-docker.git
cd df-docker
docker-compose build
docker-compose up -d
NOTE: volume df-storage:/opt/dreamfactory/storage is created to store all file based (apps, logs etc.) data from DreamFactory.
This basically stores all data written by DreamFactory (at /opt/dreamfactory/storage location) in the df-storage volume. This
way if you delete your DreamFactory container your data will persist as long as you don't delete the df-storage volume.
to stop and remove all containers you can use the command
docker-compose down
to stop and remove all containers including volumes use
docker-compose down -v
127.0.0.1 dreamfactory.app
Go to 127.0.0.1 in your browser. It will take some time the first time. You will be asked to create your first admin user.
The easiest way to configure the DreamFactory application is to use docker-compose.
cd ~/repos
(or wherever you want the clone of the repo to be)
git clone https://github.com/dreamfactorysoftware/df-docker.git
cd df-docker
2) Rename docker-compose.yml-load-balance
to docker-compose.yml
. Recommend backing up original docker-compose.yml
first.
docker-compose build
docker-compose up -d
NOTE: volume df-storage:/opt/dreamfactory/storage is created to store all file based (apps, logs etc.) data from DreamFactory.
This basically stores all data written by DreamFactory (at /opt/dreamfactory/storage location) in the df-storage volume. This
way if you delete your DreamFactory container your data will persist as long as you don't delete the df-storage volume.
to stop and remove all containers you can use the command
docker-compose down
to stop and remove all containers including volumes use
docker-compose down -v
This will create 4 containers. Mysql, Redis, DreamFactory, and Load Balancer container.
127.0.0.1 dreamfactory.app
Go to 127.0.0.1 in your browser. It will take some time the first time. You will be asked to create your first admin user.
docker-compose scale web=3
This will add two more DreamFactory container. Now the load balancer is going to balance load in a round-robin fashion among these three DreamFactory containers.
If you don't want to use docker-compose you can build the images yourself.
cd ~/repos
(or wherever you want the clone of the repo to be)
git clone https://github.com/dreamfactorysoftware/df-docker.git
cd df-docker
docker build -t dreamfactory/v2 .
docker run -d --name df-mysql -e "MYSQL_ROOT_PASSWORD=root" -e "MYSQL_DATABASE=dreamfactory" -e "MYSQL_USER=df_admin" -e "MYSQL_PASSWORD=df_admin" mysql
docker run -d --name df-redis redis
If your database and redis runs inside another container you can simply link it under the name db
and rd
respectively.
docker run -d --name df-web -p 127.0.0.1:80:80 -e "DB_HOST=db" -e "DB_USERNAME=df_admin" -e "DB_PASSWORD=df_admin" -e "DB_DATABASE=dreamfactory" -e "REDIS_HOST=rd" -e "REDIS_DATABASE=0" -e "REDIS_PORT=6379" --link df-mysql:db --link df-redis:rd dreamfactory/v2
127.0.0.1 dreamfactory.app
Go to 127.0.0.1 in your browser. It will take some time the first time. You will be asked to create your first admin user.
- You may have to use
sudo
for Docker commands depending on your setup. - By default, the container only sends nginx error logs to STDOUT. If you also want to have dreamfactory.log, e.g. for forwarding via docker logging driver
you can set environment variable
LOG_TO_STDOUT=true
IBM Bluemix has a complete set of instructions available at https://console.ng.bluemix.net/docs/containers/container_cli_ov.html#container_cli_cfic
cf login
cf ic login
cd ~/repos
(or wherever you want the clone of the repo to be)
git clone https://github.com/dreamfactorysoftware/df-docker.git
cd df-docker
In the Dockerfile, you will find comments indicating which lines need to be commented out and which ones need to be commented.
cf ic build -t dreamfactory/v2 .
Once the image has been built, the cf ic
command will push the image to your private container repository on Bluemix.
5) On the container configuration page, give your container a name, such as 'DF2', select a size (2GB Memory minimum recommended)
6) Select an already existing Public IP address or choose the 'Request and Bind Public IP' option from the dropdown
-
Based on extensive testing, it has been found that on Bluemix, the container works best using the Redis Cloud and ElephantSQL services. For the Redis Cloud service, select the 30MB or higher plan, and for Elephant SQL, select 'Pretty Panda' or higher. The 'Tiny Turtle' service plan is not sufficient.
-
Extensive testing has shown that the free ClearDB MySQL Database service is not sufficient to run DreamFactory 2.0.
-
The MySQL or Postgres service must support a minimum of 10 concurrent connections for the proper operation of DreamFactory 2.0.
-
At this time, the PostgreSQL by Composer and Redis by Compose can not be bound to a container. This is an issue with Bluemix.
-
At this time, a
user-provided
external service can not be bound to a container at this time. This is an issue with Bluemix. -
If you use a service other than ElephantSQL, when starting the image, in step 7, you will have to add the environment variable
BM_DB_SERVICE_KEY
and set it to the value present in the VCAP_SERVICES environment variable provided to the container. Unfortunately, the only practical way to find this out is to create the container, bind the services and then open a shell on the container once it's running. To do this, get the CONTAINER ID by runningcf ic ps
and then runcf ic exec -it "CONTAINERID" bash
, replacing CONTAINERID with the CONTAINER ID gotten from thecf ic ps
command. Once you are at a command prompt, runecho $VCAP_SERVICES
which will display something like{"rediscloud": [{"name": "df2-redis", "entity": {"service_instance_url": "https://api.ng.bluemix.net/v2/service_instances/3811bc12-d42c-4a4a-9255-d5c1d42b4849"}, "plan": "30mb", "credentials": {"password": "mINogWGFMpTJC9g0", "hostname": "pub-redis-13942.dal-05.1.sl.garantiadata.com", "port": "13942"}, "label": "rediscloud", "metadata": {"url": "https://api.ng.bluemix.net/v2/service_keys/b323438b-470e-4c7b-a877-a33268c27072"}}], "elephantsql": [{"name": "df2-db", "entity": {"service_instance_url": "https://api.ng.bluemix.net/v2/service_instances/677f57e1-a637-4022-8b50-730f4372091b"}, "plan": "panda", "credentials": {"uri": "postgres://mcfmjlcl:JeOGfJ7_q7kWih0v2rzPa1I6XDYHHLc3@jumbo.db.elephantsql.com:5432/mcfmjlcl", "max_conns": "20"}, "label": "elephantsql", "metadata": {"url": "https://api.ng.bluemix.net/v2/service_keys/985b6785-9cbd-4f6c-bdb8-21e56d1e9d5f"}}]}
In this particular example, the service keys are
rediscloud
andelephantsql
which are the defaults. -
If you use a service other than Redis Cloud, when starting the image, in step 7, you will have to add the environment variable
BM_REDIS_SERVICE_KEY
and set it to the value present in VCAP_SERVICES environment variable provided to the container. See the previous entry on how to view the values in VCAP SERVICES.
Option | Description | required? | default |
---|---|---|---|
SERVERNAME | Domain for DF | no | dreamfactory.app |
DB_DRIVER | Database Driver (mysql,pgsql,sqlsrv,sqlite) | no | mysql when any DB_HOST supplied. Otherwise sqlite |
DB_HOST | Database Host | no | localhost |
DB_USERNAME | Database User | no | df_admin |
DB_PASSWORD | Database Password | no | df_admin |
DB_DATABASE | Database Name | no | dreamfactory |
DB_PORT | Database Port | no | 3306 |
REDIS_HOST | Redis Cache Host | no | uses file caching |
REDIS_DATABASE | Redis DB | only if REDIS_HOST set | |
REDIS_PORT | Redis Port | no | 6379 |
REDIS_PASSWORD | Redis Password | no | none used |
APP_KEY | Application Key | yes for immutability | generates a key |
JWT_TTL | Login Token TTL | no | 60 |
JWT_REFRESH_TTL | Login Token Refresh TTL | no | 20160 |
ALLOW_FOREVER_SESSIONS | Allow refresh forever | no | false |
LOG_TO_STDOUT | Forward log to STDOUT | no | not forwarded |
SSMTP_mailhub | MX for mailing | yes if DF should mail | no mailing capabilities |
SSMTP_XXXX | prefix options with SSMTP_ | no | see the man page |
PACKAGE | Path of the package file to import | no | false |