-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
99c2d45
commit 1a740be
Showing
5 changed files
with
316 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# docker Drupal | ||
# | ||
# VERSION 0.2 | ||
# DOCKER-VERSION 0.4 | ||
FROM ubuntu:latest | ||
MAINTAINER Ricardo Amaro <[email protected]> | ||
|
||
RUN echo "deb http://archive.ubuntu.com/ubuntu raring main restricted universe multiverse" > /etc/apt/sources.list | ||
RUN apt-get update | ||
#RUN apt-get -y upgrade | ||
|
||
RUN dpkg-divert --local --rename --add /sbin/initctl | ||
RUN ln -s /bin/true /sbin/initctl | ||
|
||
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install git mysql-client mysql-server apache2 libapache2-mod-php5 pwgen python-setuptools vim-tiny php5-mysql php-apc php5-gd php5-memcache memcached drush mc | ||
|
||
RUN apt-get clean | ||
# Make mysql listen on the outside | ||
RUN sed -i "s/^bind-address/#bind-address/" /etc/mysql/my.cnf | ||
|
||
RUN easy_install supervisor | ||
ADD ./start.sh /start.sh | ||
ADD ./foreground.sh /etc/apache2/foreground.sh | ||
ADD ./supervisord.conf /etc/supervisord.conf | ||
|
||
# Retrieve drupal | ||
RUN rm -rf /var/www/ ; cd /var ; drush dl drupal ; mv /var/drupal*/ /var/www/ | ||
RUN chmod a+w /var/www/sites/default ; mkdir /var/www/sites/default/files ; chown -R www-data:www-data /var/www/ | ||
|
||
RUN chmod 755 /start.sh /etc/apache2/foreground.sh | ||
EXPOSE 80 | ||
CMD ["/bin/bash", "/start.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,107 @@ | ||
docker-drupal | ||
============= | ||
|
||
docker-drupal | ||
This repo contains a recipe for making a [Docker](http://docker.io) container for Drupal, using Linux, Apache and MySQL. | ||
To build, make sure you have Docker [installed](http://www.docker.io/gettingstarted/), | ||
|
||
## Install docker: | ||
``` | ||
sudo apt-get -y install docker | ||
curl get.docker.io | sudo sh -x | ||
``` | ||
|
||
## Clone this repo somewhere, and then run: | ||
``` | ||
sudo docker build -t <yourname>/drupal . | ||
``` | ||
|
||
## Or build directly from github: | ||
``` | ||
sudo docker build -t <yourname>/drupal git://github.com/ricardoamaro/docker-drupal.git | ||
``` | ||
|
||
And run the container, connecting port 80: | ||
``` | ||
sudo docker run -d -t -p 80:80 <yourname>/drupal | ||
``` | ||
That's it! | ||
Visit in a webrowser, on http://localhost/ | ||
|
||
Note: you cannot have port 80 already used or the container will not start. | ||
In that case you can start by setting: `-p 8080:80` | ||
|
||
|
||
|
||
|
||
### Credentials | ||
|
||
ROOT MYSQL_PASSWORD will be on /mysql-root-pw.txt | ||
DRUPAL MYSQL PASSWORD will be on /drupal-db-pw.txt | ||
Drupal account-name=admin & account-pass=admin | ||
|
||
|
||
## More docker awesomeness | ||
|
||
This will create an ID that you can start/stop/commit changes: | ||
``` | ||
# sudo docker ps | ||
ID IMAGE COMMAND CREATED STATUS PORTS | ||
538114c20d36 <yourname>/drupal:latest /bin/bash /start.sh 3 minutes ago Up 6 seconds 80->80 | ||
``` | ||
|
||
Start/Stop | ||
``` | ||
sudo docker stop 538114c20d36 | ||
sudo docker start 538114c20d36 | ||
``` | ||
|
||
Commit the actual state to the image | ||
``` | ||
sudo docker commit 538114c20d36 <yourname>/drupal | ||
``` | ||
|
||
Starting again with the commited changes | ||
``` | ||
sudo docker run -d -t -p 80:80 <yourname>/drupal /start.sh | ||
``` | ||
|
||
Shipping the container image elsewhere | ||
``` | ||
sudo docker push <yourname>/drupal | ||
``` | ||
|
||
You can find more images using the [Docker Index][docker_index]. | ||
|
||
ricardoamaro/drupal-lamp | ||
|
||
### Clean up | ||
While i am developing i use this to rm all old instances | ||
``` | ||
sudo docker ps -a | awk '{print $1}' | xargs -n1 -I {} docker rm {} | ||
``` | ||
|
||
### Known Issues | ||
* Upstart on Docker is broken due to [this issue][docker_upstart_issue], and that's one of the reasons the image is puppetized using vagrant. | ||
* Warning: This is still in development and ports shouldn't be open to the outside world. | ||
|
||
|
||
## Contributing | ||
Feel free to fork and contribute to this code. :) | ||
|
||
1. Fork the repo | ||
2. Create your feature branch (`git checkout -b my-new-feature`) | ||
3. Commit your changes (`git commit -am 'Added some feature'`) | ||
4. Push to the branch (`git push origin my-new-feature`) | ||
5. Create new Pull Request | ||
|
||
## Authors | ||
|
||
Created and maintained by [Ricardo Amaro][author] (<[email protected]>) | ||
|
||
## License | ||
GPL v3 | ||
|
||
[author]: https://github.com/ricardoamaro | ||
[docker_upstart_issue]: https://github.com/dotcloud/docker/issues/223 | ||
[docker_index]: https://index.docker.io/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#!/bin/bash | ||
|
||
read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat | ||
trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT | ||
|
||
source /etc/apache2/envvars | ||
apache2 -D FOREGROUND |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
#!/bin/bash | ||
if [ ! -f /var/www/sites/default/settings.php ]; then | ||
# Start mysql | ||
/usr/bin/mysqld_safe & | ||
sleep 10s | ||
# Generate random passwords | ||
DRUPAL_DB="drupal" | ||
MYSQL_PASSWORD=`pwgen -c -n -1 12` | ||
DRUPAL_PASSWORD=`pwgen -c -n -1 12` | ||
# This is so the passwords show up in logs. | ||
echo mysql root password: $MYSQL_PASSWORD | ||
echo drupal password: $DRUPAL_PASSWORD | ||
echo $MYSQL_PASSWORD > /mysql-root-pw.txt | ||
echo $DRUPAL_PASSWORD > /drupal-db-pw.txt | ||
mysqladmin -u root password $MYSQL_PASSWORD | ||
mysql -uroot -p$MYSQL_PASSWORD -e "CREATE DATABASE drupal; GRANT ALL PRIVILEGES ON drupal.* TO 'drupal'@'localhost' IDENTIFIED BY '$DRUPAL_PASSWORD'; FLUSH PRIVILEGES;" | ||
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/sites-available/default | ||
a2enmod rewrite vhost_alias | ||
cd /var/www/ | ||
drush site-install standard -y --account-name=admin --account-pass=admin --db-url="mysqli://drupal:${DRUPAL_PASSWORD}@localhost:3306/drupal" | ||
killall mysqld | ||
sleep 10s | ||
fi | ||
supervisord -n |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
; Sample supervisor config file. | ||
; | ||
; For more information on the config file, please see: | ||
; http://supervisord.org/configuration.html | ||
; | ||
; Note: shell expansion ("~" or "$HOME") is not supported. Environment | ||
; variables can be expanded using this syntax: "%(ENV_HOME)s". | ||
|
||
[unix_http_server] | ||
file=/tmp/supervisor.sock ; (the path to the socket file) | ||
;chmod=0700 ; socket file mode (default 0700) | ||
;chown=nobody:nogroup ; socket file uid:gid owner | ||
;username=user ; (default is no username (open server)) | ||
;password=123 ; (default is no password (open server)) | ||
|
||
;[inet_http_server] ; inet (TCP) server disabled by default | ||
;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) | ||
;username=user ; (default is no username (open server)) | ||
;password=123 ; (default is no password (open server)) | ||
|
||
[supervisord] | ||
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) | ||
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) | ||
logfile_backups=10 ; (num of main logfile rotation backups;default 10) | ||
loglevel=info ; (log level;default info; others: debug,warn,trace) | ||
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) | ||
nodaemon=false ; (start in foreground if true;default false) | ||
minfds=1024 ; (min. avail startup file descriptors;default 1024) | ||
minprocs=200 ; (min. avail process descriptors;default 200) | ||
;umask=022 ; (process file creation umask;default 022) | ||
;user=chrism ; (default is current user, required if root) | ||
;identifier=supervisor ; (supervisord identifier, default is 'supervisor') | ||
;directory=/tmp ; (default is not to cd during start) | ||
;nocleanup=true ; (don't clean up tempfiles at start;default false) | ||
;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP) | ||
;environment=KEY=value ; (key value pairs to add to environment) | ||
;strip_ansi=false ; (strip ansi escape codes in logs; def. false) | ||
|
||
; the below section must remain in the config file for RPC | ||
; (supervisorctl/web interface) to work, additional interfaces may be | ||
; added by defining them in separate rpcinterface: sections | ||
[rpcinterface:supervisor] | ||
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface | ||
|
||
[supervisorctl] | ||
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket | ||
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket | ||
;username=chris ; should be same as http_username if set | ||
;password=123 ; should be same as http_password if set | ||
;prompt=mysupervisor ; cmd line prompt (default "supervisor") | ||
;history_file=~/.sc_history ; use readline history if available | ||
|
||
; The below sample program section shows all possible program subsection values, | ||
; create one or more 'real' program: sections to be able to control them under | ||
; supervisor. | ||
|
||
;[program:theprogramname] | ||
;command=/bin/cat ; the program (relative uses PATH, can take args) | ||
;process_name=%(program_name)s ; process_name expr (default %(program_name)s) | ||
;numprocs=1 ; number of processes copies to start (def 1) | ||
;directory=/tmp ; directory to cwd to before exec (def no cwd) | ||
;umask=022 ; umask for process (default None) | ||
;priority=999 ; the relative start priority (default 999) | ||
;autostart=true ; start at supervisord start (default: true) | ||
;autorestart=unexpected ; whether/when to restart (default: unexpected) | ||
;startsecs=1 ; number of secs prog must stay running (def. 1) | ||
;startretries=3 ; max # of serial start failures (default 3) | ||
;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) | ||
;stopsignal=QUIT ; signal used to kill process (default TERM) | ||
;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) | ||
;stopasgroup=false ; send stop signal to the UNIX process group (default false) | ||
;killasgroup=false ; SIGKILL the UNIX process group (def false) | ||
;user=chrism ; setuid to this UNIX account to run the program | ||
;redirect_stderr=true ; redirect proc stderr to stdout (default false) | ||
;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO | ||
;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) | ||
;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) | ||
;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) | ||
;stdout_events_enabled=false ; emit events on stdout writes (default false) | ||
;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO | ||
;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) | ||
;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) | ||
;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) | ||
;stderr_events_enabled=false ; emit events on stderr writes (default false) | ||
;environment=A=1,B=2 ; process environment additions (def no adds) | ||
;serverurl=AUTO ; override serverurl computation (childutils) | ||
|
||
; The below sample eventlistener section shows all possible | ||
; eventlistener subsection values, create one or more 'real' | ||
; eventlistener: sections to be able to handle event notifications | ||
; sent by supervisor. | ||
|
||
;[eventlistener:theeventlistenername] | ||
;command=/bin/eventlistener ; the program (relative uses PATH, can take args) | ||
;process_name=%(program_name)s ; process_name expr (default %(program_name)s) | ||
;numprocs=1 ; number of processes copies to start (def 1) | ||
;events=EVENT ; event notif. types to subscribe to (req'd) | ||
;buffer_size=10 ; event buffer queue size (default 10) | ||
;directory=/tmp ; directory to cwd to before exec (def no cwd) | ||
;umask=022 ; umask for process (default None) | ||
;priority=-1 ; the relative start priority (default -1) | ||
;autostart=true ; start at supervisord start (default: true) | ||
;autorestart=unexpected ; whether/when to restart (default: unexpected) | ||
;startsecs=1 ; number of secs prog must stay running (def. 1) | ||
;startretries=3 ; max # of serial start failures (default 3) | ||
;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) | ||
;stopsignal=QUIT ; signal used to kill process (default TERM) | ||
;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) | ||
;stopasgroup=false ; send stop signal to the UNIX process group (default false) | ||
;killasgroup=false ; SIGKILL the UNIX process group (def false) | ||
;user=chrism ; setuid to this UNIX account to run the program | ||
;redirect_stderr=true ; redirect proc stderr to stdout (default false) | ||
;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO | ||
;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) | ||
;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) | ||
;stdout_events_enabled=false ; emit events on stdout writes (default false) | ||
;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO | ||
;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) | ||
;stderr_logfile_backups ; # of stderr logfile backups (default 10) | ||
;stderr_events_enabled=false ; emit events on stderr writes (default false) | ||
;environment=A=1,B=2 ; process environment additions | ||
;serverurl=AUTO ; override serverurl computation (childutils) | ||
|
||
; The below sample group section shows all possible group values, | ||
; create one or more 'real' group: sections to create "heterogeneous" | ||
; process groups. | ||
|
||
;[group:thegroupname] | ||
;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions | ||
;priority=999 ; the relative start priority (default 999) | ||
|
||
; The [include] section can just contain the "files" setting. This | ||
; setting can list multiple files (separated by whitespace or | ||
; newlines). It can also contain wildcards. The filenames are | ||
; interpreted as relative to this file. Included files *cannot* | ||
; include files themselves. | ||
|
||
;[include] | ||
;files = relative/directory/*.ini | ||
;mysql and apache2 | ||
[program:mysqld] | ||
command=/usr/bin/mysqld_safe | ||
[program:httpd] | ||
command=/etc/apache2/foreground.sh | ||
stopsignal=6 | ||
[program:memcached] | ||
command=/usr/bin/memcached -p 11211 -u www-data -m 64 -c 1024 -t 4 | ||
|
||
|