WordPress – Install WordPress to Docker containers from Windows

In this tutorial, I will guide your through on how to install wordpress on a container of docker.
The same step can be use to install wordpress on an acture Ubuntu machine, with some small changes


1. Install Apache

Login to Docker container with SuperPutty / Putty

apt-get update
apt-get install apache2

(type y to confirm installation)

apache2ctl configtest

If output is

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using Set the 'ServerName' directive globally to suppress this message
Syntax OK

Meaning: apache cannot get the reliably server domain name


To fix: edit apache2.conf

Recommended: Map network drive to easily config or copy file to container

Download + install Dolkan

Download + install win-sshfs

follow the step to map

mapping instruction

open /etc/apache2/apache2.conf in your favorite editor

add this line at the end of the file

ServerName localhost

type apache2ctl configtest again to see warning is disappeared

2. Install MySQL

2.1. Install mysql-server

apt-get install mysql-server

In the installation process, type password for root user

3. Install PHP

apt-get install php libapache2-mod-php php-mcrypt php-mysql

Config apache priority for index.php instead of index.html

Because dir.conf presented as folder, so we have to edit with linux nano

nano /etc/apache2/mods-enabled/dir.conf

It should look like this


Type Ctrl + X to exit nano, type y to save

Restart Apache2 server

service apache2 restart

To test PHP server
(REMOVE the file after test because it will show your server info)

Create new file info.php in /var/www/html/

Insert some PHP code


Then you can access http://your_domain_name/info


4. Setup WordPress

4.1. Create MySQL database and user

Start MySQL server

/etc/init.d/mysql start

Login into mysql

mysql -u root -p

Enter your password

Your console windows will now start with mysql&gt;

Type in to create database for wordpress (database name can be customize)


SQL query must end with semicolon(;)

Create a separate account to manage wordpress database

GRANT ALL ON wordpress.* TO 'admin'@'localhost' IDENTIFIED BY 'admin';

Flush the current Privileges, so MySQL will know about the recent changes


Exit MySQL


Adjust Apache configuration to allow for .htaccess override and rewrites

Open apache configuration file to edit


You can use Ubuntu nano editor, or if you’ve mapped the network drive before (step 4), open the file like any other file on windows


nano /etc/apache2/apache2.conf

Network Drive

network drive edit file

Search for this part and change

. . .

<Directory /var/www/html/>
    AllowOverride All

. . .

Save and close the file

Enable rewrite module

a2enmod rewrite

Enable changes

apache2ctl configtest

Restart apache2 service

service apache2 restart

4.2. Install wordpress

Download wordpress at: https://wordpress.org/

Extract to a folder

Copy the content of folder “wordpress” to folder “/var/www/html” on container

Permission and .htaccess
Show hidden files and folder on WinSCP

Open WinSCP > Option > References…

show hidden file

Create .htaccess file

Right click on an empty space > New File > enter .htaccess

create .htaccess

Set Read / Write permission for .htaccess

Right click on .htaccess > Properties

permissions for .htaccess

Set permission recursively for all 3 folders

permissions for all 3 folders

4.3. Config

Open wp-config.php and fill in these info

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'admin');

/** MySQL database password */
define('DB_PASSWORD', 'admin');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

Open link and copy the code show up then replace them


Add this line (to enable wordpress can modify files and folder directly

define('FS_METHOD', 'direct');

It’s done, open your domain:port to config wordpress using web interface


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s