Sign inSign up

hacklab/wordpress

By hacklab

Updated over 3 years ago

A WordPress docker image

Image
4

100K+

hacklab/wordpress repository overview

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

Tag summary

Content type

Image

Digest

sha256:9946c2055

Size

350.3 MB

Last updated

over 3 years ago

docker pull hacklab/wordpress