This Docker image (yobasystems/alpine-php-wordpress) is based on the minimal Alpine Linux ready for running WordPress. (Requires external database)
Alpine Linux is a Linux distribution built around musl libc and BusyBox. The image is only 5 MB in size and has access to a package repository that is much more complete than other BusyBox based images. This makes Alpine Linux a great image base for utilities and even production applications. Read more about Alpine Linux here and you can see how their mantra fits in right at home with Docker images.
WordPress is an online, open source website creation tool written in PHP. But in non-geek speak, it's probably the easiest and most powerful blogging and website content management system (or CMS) in existence today.
- Minimal size only, minimal layers
- Memory usage is minimal on a simple install
:amd64
,:x86_64
- 64 bit Intel/AMD (x86_64/amd64):arm64v8
,:aarch64
- 64 bit ARM (ARMv8/aarch64):arm32v7
,:armhf
- 32 bit ARM (ARMv7/armhf)
:latest
latest branch based (Automatic Architecture Selection):master
master branch usually inline with latest:amd64
,:x86_64
amd64 based on latest tag but amd64 architecture:aarch64
,:arm64v8
Armv8 based on latest tag but arm64 architecture:armhf
,:arm32v7
Armv7 based on latest tag but arm32 architecture
/usr/html
: Webroot
Make sure you create the folder on the host before starting the container and obtain the correct permissions.
mkdir -p /data/{domain}/html
docker run -e VIRTUAL_HOST={domain}.com,www.{domain}.com -v /data/{domain}/html:/usr/html -p 80:80 yobasystems/alpine-php-wordpress
E.G
mkdir -p /data/yobasystems/html
docker run -e VIRTUAL_HOST=yobasystems.co.uk,www.yobasystems.co.uk -v /data/yobasystems/html:/usr/html -p 80:80 yobasystems/alpine-php-wordpress
The following user and group id are used, the files should be set to this: User ID: Group ID:
chown -R 100:101 /data/{domain}/html
E.G
chown -R 100:101 /data/yobasystems/html
Populate /data/{domain}/html with your WP files.
The following user and group id are used, the files should be set to this:
User ID:
Group ID:
chown -R 100:101 /data/{domain}/html
This image now includes WP-CLI wpcli.org baked in... Its best to su nginx
before executing anything or else you can potentially compromise your host.
docker exec -it <container_name> bash
su nginx
cd /usr/html
wp-cli core download --locale=en_GB
Edit the wp-config.php file and include the line;
define('WP_REDIS_HOST', 'redis');
The next thing is to install the plugin Redis Object Cache
If using SSL and running behind a proxy like HAproxy then the following needs to be added to the wp-config.php file (to stop infinite redirect);
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
The upload limit is 128 Megabytes.
modify files/php-fpm.conf
To modify php.ini variable, simply edit php-fpm.ini and add php_flag[variable] = value.
php_flag[display_errors] = on
docker exec <image_id> apk add <pkg_name>
docker restart <image_name>
Example:
docker exec <image_id> apk add php7-soap
docker restart <image_name>
php7-common
php7-pdo_sqlite
php7-pear
php7-ftp
php7-imap
php7-mysqli
php7-json
php7-mbstring
php7-soap
php7-litespeed
php7-sockets
php7-bcmath
php7-opcache
php7-dom
php7-zlib
php7-gettext
php7-fpm
php7-intl
php7-openssl
php7-session
php7-mcrypt
php7-pdo_mysql
php7-embed
php7-xmlrpc
php7-wddx
php7-dba
php7-ldap
php7-xsl
php7-exif
php7-pdo_dblib
php7-bz2
php7-pdo
php7-pspell
php7-sysvmsg
php7-gmp
php7-apache2
php7-pdo_odbc
php7-shmop
php7-ctype
php7-phpdbg
php7-enchant
php7-sysvsem
php7-sqlite3
php7-odbc
php7-pcntl
php7-calendar
php7-xmlreader
php7-snmp
php7-zip
php7-posix
php7-iconv
php7-curl
php7-doc
php7-gd
php7-xml
php7-dev
php7-cgi
php7-sysvshm
php7-pgsql
php7-tidy
php7-pdo_pgsql
php7-phar
php7-mysqlnd
wordpress:
image: yobasystems/alpine-php-wordpress
environment:
VIRTUAL_HOST: example.co.uk
expose:
- "80"
volumes:
- /data/example/www:/usr/html
restart: always
links:
- mysql:mysql
mysql:
environment:
MYSQL_DATABASE: wordpressdb
MYSQL_PASSWORD: wordpresspass
MYSQL_ROOT_PASSWORD: ''
MYSQL_USER: wordpressuser
image: yobasystems/alpine-mariadb
BITCOIN: bc1ql0heex0jxh0yj5cucc83a3x6c6rxuq6x9zk07g
ETHEREUM: 0x6b707391c60d50E4E414a143446C0b8eF9A2d1c4
STELLAR: GAREZZW36KF2IT2EJW6LG5HH4XT3QIMWCHMCGEBC6V3AP3EFJCORRZIY
XRP: rsaEp3bh3LrjVHqrcyLgbUb6QUQbBogzR3
ZCASH: t1MuAY2vR17vDK3BgCAtf8ZdXsCiBw3zkU6