Runs Phabricator and all associated daemons in one image (this image does not contain a database). This image currently auto-updates Phabricator once a week and restarts all processes.
This image can be pulled by running docker pull offbyone/phabricator
This image was put together based off of the previous work done by https://github.com/hach-que-docker/phabricator and with insight from the previous work done by people at the following locations
- https://github.com/yesnault/docker-phabricator/
- http://blog.spang.cc/posts/running_phd_under_supervisor/
- http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/
To configure this image, create a config
directory, with a script.pre
file inside it. This
file should be marked as executable. Place the following content in that file:
#!/bin/bash
# Set the name of the host running MySQL:
./bin/config set mysql.host "example.com"
# If MySQL is running on a non-standard port:
#./bin/config set mysql.port 3306
# Set the username for connecting to MySQL:
./bin/config set mysql.user "root"
# Set the password for connecting to MySQL:
./bin/config set mysql.pass "password"
# Set the base URI that will be used to access Phabricator:
./bin/config set phabricator.base-uri "http://myphabricator.com/"
To run this image:
/usr/bin/docker run -p 22:22 -p 24 -p 80:80 -p 443:443 -p 22280:22280 -v /path/to/config:/config -v /path/to/repo/storage:/var/repo --name=phabricator --link mariadb:linked_mariadb offbyone/phabricator
What do these parameters do?
-p 22:22 = forward the host's SSH port to Phabricator for repository access
-p 24 = publishes port 24 from your Phabricator's instance to the host running docker (can be retrieved to SSH in)
-p 80:80 = forward the host's HTTP port to Phabricator for web access
-p 443:443 = forward the host's HTTPS port to Phabricator for secure web access
-p 22280:22280 = forward the host's 22280 port for the notification server
-v path/to/config:/config = map the configuration from the host to the container
-v path/to/repo/storage:/var/repo = map the repository storage from the host to the container
--name phabricator = the name of the container
--link mariadb:linked_mariadb = (optional) if you are running MariaDB in a Docker container
offbyone/phabricator = the name of the image
To enable SSL, place cert.pem
and cert.key
files alongside script.pre
. The Docker
container will automatically detect the presence of the certificates and configure
Nginx to run with SSL enabled.
If you are running MariaDB in a Docker container (e.g. using the hachque/mariadb
container), you can configure the script.pre
file like so to use the linked MariaDB container:
./bin/config set mysql.host "$LINKED_MARIADB_PORT_3306_TCP_ADDR"
./bin/config set mysql.port "$LINKED_MARIADB_PORT_3306_TCP_PORT"
Include the --link
option as shown above to link the Phabricator container to the MariaDB container.
To enable SSH, place an authorized_keys file next to script.pre
(in the config
directory). You will be able to log in
using key authentication.
_
Username: root
Port: 24
(Note that repository hosting for Phabricator is served on port 22)
To retrieve the port that SSH is running on your server type docker port phabricator 24
Then log in using ssh -p PORT_NUM [email protected]
where PORT_NUM is the output port from the docker port command
NOTE: This image assumes you are either storing your files using MySQL or using S3, there is no guarantee that your files will stick around if you use either other method. If you'd like to store files on the filesystem, you'll want to add an additional volume.