Skip to content

Combine the perks of Docker development and deployment with the power of Wordpress

Notifications You must be signed in to change notification settings

hacklabr/docker-wordpress

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Repository files navigation

WordPress Docker Image

This is an image to help on plugins and themes development, but it can be used to host a WordPress site as well. There are some tools and nice librarys included, like OPCache, X-Debug and WP-Cli.

Overriding configurations

You can override wp-config.php values by using environment variables. Actually, the variables present on wp-config.php and values when variable is not defined are below.

Variable NameDefault Value
HTTPS
WORDPRESS_AUTH_KEY<random string>
WORDPRESS_AUTH_SALT<random string>
WORDPRESS_LOGGED_IN_KEY<random string>
WORDPRESS_LOGGED_IN_SALT<random string>
WORDPRESS_NONCE_SALT<random string>
WORDPRESS_SECURE_AUTH_KEY<random string>
WORDPRESS_SECURE_AUTH_SALT<random string>
WORDPRESS_NONCE_KEY<random string>
WORDPRESS_DB_CHARSETutf8
WORDPRESS_DB_COLLATE
WORDPRESS_DB_HOSTmysql
WORDPRESS_DB_NAMEwordpress
WORDPRESS_DB_PASSWORDwordpress
WORDPRESS_DB_USERwordpress
WORDPRESS_DEBUGfalse
WORDPRESS_DEBUG_DISPLAYfalse
WORDPRESS_DEBUG_LOGfalse
WORDPRESS_FS_METHODdirect
WORDPRESS_TABLE_PREFIXwp_
WORDPRESS_HOME<?= $_SERVER['SERVER_NAME']; ?>
WORDPRESS_SITEURL<?= $_SERVER['SERVER_NAME']; ?>

Overriding variables not defined on wp-config.php

If you have variables not present on table above, you can mount a folder with your configuration at /var/www/html/wp-config.d. All php files on that directory will be included on wp-config.php. You can also override variables present on default wp-config.php.

Parental advisory

If you are running behind a reverse proxy and inside a Virtual Host, you may be safe about WORDPRESS_HOME and WORDPRESS_SITEURL default values.

But if you container receive requests with unexpected SERVER_NAME, you must provide values for those variables.

In any case, it is a good idea to provide values for those variables.

Development environment

There are a WordPress installed at /var/www/html. So if you want to develop a plugin, you can mount your content mapping your plugin folder in /var/www/html/wp-content/plugins.

Let's suppose you want to test your plugin called Awesome, your docker-compose.yml should be like this below.

version: '2' services: web: image: hacklab/wordpress environment: - WORDPRESS_DEBUG=true - WORDPRESS_DB_USER=the_db_user - WORDPRESS_DB_PASSWORD=the_db_pass - WORDPRESS_DB_NAME=the_db_name ports: - "80:80" mysql: image: mariadb environment: - MYSQL_USER=the_db_user - MYSQL_PASSWORD=the_db_pass - MYSQL_DATABASE=the_db_name - MYSQL_ROOT_PASSWORD=the_root_pass - TERM=xterm 

X-Debug

When you set WORDPRESS_DEBUG=true in container environment, the X-Debug configuration will be created automatically, and the container will receive connections from any host. If you want suppress X-Debug, set an enviroment variable with false value, like XDEBUG=false.

Atom users

Tell your Atom about folder mapping by editing config.cson. You have to configure the section called "php-debug". It should look like this:

 "php-debug": PathMaps: [ "remotepath;localpath" "/var/www/html/;/local/path/to/wordpress/" ] PhpException: CatchableFatalError: false Deprecated: false FatalError: false Notice: false ParseError: false StrictStandards: false UnknownError: false Warning: false Xdebug: false ServerPort: 9000 

Modules enabled by default

The modules below are used on most of hacklab WordPress projects and probably may be useful for wide range of projects. While modules can take a lot of memory for each Apache process, the modules below enable users to take advantage of a lot of WordPress Cache plugins, like W3 Total Cache.

  • apcu
  • calendar
  • Core
  • ctype
  • curl
  • date
  • dom
  • fileinfo
  • filter
  • ftp
  • gd
  • hash
  • iconv
  • json
  • libxml
  • mbstring
  • mcrypt
  • memcached
  • mysqli
  • mysqlnd
  • openssl
  • pcre
  • PDO
  • pdo_mysql
  • pdo_sqlite
  • Phar
  • posix
  • readline
  • redis
  • Reflection
  • session
  • SimpleXML
  • sockets
  • SPL
  • sqlite3
  • standard
  • tokenizer
  • xml
  • xmlreader
  • xmlwriter
  • zip
  • zlib

About

Combine the perks of Docker development and deployment with the power of Wordpress

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7