Sign inSign up

demyx/nginx-php-wordpress

By demyx

Updated about 6 years ago

Docker image running Alpine Linux, NGINX, PHP, and WordPress.

Image
6

1M+

demyx/nginx-php-wordpress repository overview

nginx-php-wordpress

Build Status Docker Pulls Architecture Alpine NGINX PHP WordPress Buy Me A Coffee Become a Patron!

Automatically installs wp-config.php using environment variables, configures salts, and enables HTTP_X_FORWARDED_PROTO. Image was built for: github.com/demyxco.

DEMYXNGINX-PHP-WORDPRESS
TAGSlatest bedrock
USER
GROUP
www-data (82)
www-data (82)
WORKDIR/var/www/html
PORT80 9000
ENTRYPOINTs6-overlay
TIMEZONEAmerica/Los_Angeles
PHP/etc/php7/php.ini
/etc/php7/php-fpm.d/php-fpm.conf
NGINX/etc/nginx/nginx.conf
/etc/nginx/cache
/etc/nginx/common
/etc/nginx/modules

Updates & Support

Code Size Repository Size Watches Stars Forks

  • Auto built weekly on Saturdays (America/Los_Angeles)
  • Rolling release updates
  • For support: #demyx

WordPress Container

  • Install the helper plugin Nginx Helper if WORDPRESS_NGINX_CACHE is on
  • To generate htpasswd: docker run -it --rm demyx/utilities "htpasswd -nb demyx demyx"
  • WORDPRESS_NGINX_BASIC_AUTH must have double dollar signs ($$)
ENVIRONMENTVARIABLE
WORDPRESS_DB_HOSTdb
WORDPRESS_DB_NAMEdemyx_db
WORDPRESS_DB_USERdemyx_user
WORDPRESS_DB_PASSWORDdemyx_password
WORDPRESS_DOMAINdomain.tld
WORDPRESS_UPLOAD_LIMIT128M
WORDPRESS_PHP_MEMORY256M
WORDPRESS_PHP_MAX_EXECUTION_TIME300
WORDPRESS_PHP_OPCACHEtrue
WORDPRESS_NGINX_CACHEfalse
WORDPRESS_NGINX_RATE_LIMITfalse
WORDPRESS_NGINX_XMLRPCfalse
WORDPRESS_NGINX_BASIC_AUTHdemyx:$$apr1$$EqJj89Yw$$WLsBIjCILtBGjHppQ76YT1
(demyx:demyx)
TZAmerica/Los_Angeles

MariaDB Container

ENVIRONMENTVARIABLE
MARIADB_BINLOG_FORMATmixed
MARIADB_CHARACTER_SET_SERVERutf8
MARIADB_COLLATION_SERVERutf8_general_ci
MARIADB_DATABASE# Optional
MARIADB_DEFAULT_CHARACTER_SETutf8
MARIADB_INNODB_BUFFER_POOL_SIZE16M
MARIADB_INNODB_DATA_FILE_PATHibdata1:10M:autoextend
MARIADB_INNODB_FLUSH_LOG_AT_TRX_COMMIT1
MARIADB_INNODB_LOCK_WAIT_TIMEOUT50
MARIADB_INNODB_LOG_BUFFER_SIZE8M
MARIADB_INNODB_LOG_FILE_SIZE5M
MARIADB_INNODB_USE_NATIVE_AIO1
MARIADB_KEY_BUFFER_SIZE20M
MARIADB_LOG_BINmysql-bin
MARIADB_MAX_ALLOWED_PACKET16M
MARIADB_MAX_CONNECTIONS151
MARIADB_MYISAM_SORT_BUFFER_SIZE8M
MARIADB_NET_BUFFER_SIZE8K
MARIADB_PASSWORD# Optional
MARIADB_READ_BUFFER2M
MARIADB_READ_BUFFER_SIZE256K
MARIADB_READ_RND_BUFFER_SIZE512K
MARIADB_ROOT_PASSWORD# Required
MARIADB_SERVER_ID1
MARIADB_SORT_BUFFER_SIZE20M
MARIADB_TABLE_OPEN_CACHE64
MARIADB_USERNAME# Optional
MARIADB_WRITE_BUFFER2M
TZAmerica/Los_Angeles

Usage

  • Requires no config file for Traefik and is ready to go when running: docker-compose up -d
  • For SSL/TLS, just remove the comments (#)
  • Upgrading from Traefik v1 to v2? You will need to convert your acme.json
version: "3.7"
services:
  traefik:
    image: traefik
    container_name: demyx_traefik
    restart: unless-stopped
    networks:
      - demyx
    ports:
      - 80:80
      #- 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - demyx_traefik:/demyx
    environment:
      - TRAEFIK_API=true
      - TRAEFIK_PROVIDERS_DOCKER=true
      - TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT=false
      - TRAEFIK_ENTRYPOINTS_HTTP_ADDRESS=:80
      #- TRAEFIK_ENTRYPOINTS_HTTPS_ADDRESS=:443
      ## Only one ACME challenge must be activated at a time
      #- TRAEFIK_CERTIFICATESRESOLVERS_DEMYX_ACME_HTTPCHALLENGE=true
      #- TRAEFIK_CERTIFICATESRESOLVERS_DEMYX_ACME_HTTPCHALLENGE_ENTRYPOINT=http
      #- TRAEFIK_CERTIFICATESRESOLVERS_DEMYX_ACME_DNSCHALLENGE=true
      #- TRAEFIK_CERTIFICATESRESOLVERS_DEMYX_ACME_DNSCHALLENGE_PROVIDER=cloudflare
      #- TRAEFIK_CERTIFICATESRESOLVERS_DEMYX_ACME_DNSCHALLENGE_DELAYBEFORECHECK=5
      #- TRAEFIK_CERTIFICATESRESOLVERS_DEMYX_ACME_DNSCHALLENGE_RESOLVERS=1.1.1.1
      #- CF_API_EMAIL=
      #- CF_API_KEY=
      #- [email protected]
      #- TRAEFIK_CERTIFICATESRESOLVERS_DEMYX_ACME_STORAGE=/demyx/acme.json
      - TRAEFIK_LOG=true
      - TRAEFIK_LOG_LEVEL=INFO
      - TRAEFIK_LOG_FILEPATH=/demyx/error.log
      - TRAEFIK_ACCESSLOG=true
      - TRAEFIK_ACCESSLOG_FILEPATH=/demyx/access.log
      - TZ=America/Los_Angeles
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik-http.rule=Host(`traefik.domain.tld`)"
      - "traefik.http.routers.traefik-http.service=api@internal"
      - "traefik.http.routers.traefik-http.entrypoints=http"
      #- "traefik.http.routers.traefik-http.middlewares=traefik-redirect"
      #- "traefik.http.routers.traefik-https.rule=Host(`traefik.domain.tld`)"
      #- "traefik.http.routers.traefik-https.entrypoints=https"
      #- "traefik.http.routers.traefik-https.service=api@internal"
      #- "traefik.http.routers.traefik-https.tls.certresolver=demyx"
      #- "traefik.http.routers.traefik-https.middlewares=traefik-auth"
      #- "traefik.http.middlewares.traefik-auth.basicauth.users=demyx:$$apr1$$EqJj89Yw$$WLsBIjCILtBGjHppQ76YT1"
      #- "traefik.http.middlewares.traefik-redirect.redirectscheme.scheme=https"
  db:
    container_name: demyx_db
    image: demyx/mariadb
    restart: unless-stopped
    networks:
      - demyx
    volumes:
      - demyx_db:/var/lib/mysql
    environment:
      - MARIADB_DATABASE=demyx_db
      - MARIADB_USERNAME=demyx_user
      - MARIADB_PASSWORD=demyx_password
      - MARIADB_ROOT_PASSWORD=demyx_root_password # mandatory
      - MARIADB_BINLOG_FORMAT=mixed
      - MARIADB_CHARACTER_SET_SERVER=utf8
      - MARIADB_COLLATION_SERVER=utf8_general_ci
      - MARIADB_DEFAULT_CHARACTER_SET=utf8
      - MARIADB_INNODB_BUFFER_POOL_SIZE=16M
      - MARIADB_INNODB_DATA_FILE_PATH=ibdata1:10M:autoextend
      - MARIADB_INNODB_FLUSH_LOG_AT_TRX_COMMIT=1
      - MARIADB_INNODB_LOCK_WAIT_TIMEOUT=50
      - MARIADB_INNODB_LOG_BUFFER_SIZE=8M
      - MARIADB_INNODB_LOG_FILE_SIZE=5M
      - MARIADB_INNODB_USE_NATIVE_AIO=1
      - MARIADB_KEY_BUFFER_SIZE=20M
      - MARIADB_LOG_BIN=mysql-bin
      - MARIADB_MAX_ALLOWED_PACKET=16M
      - MARIADB_MAX_CONNECTIONS=151
      - MARIADB_MYISAM_SORT_BUFFER_SIZE=8M
      - MARIADB_NET_BUFFER_SIZE=8K
      - MARIADB_READ_BUFFER=2M
      - MARIADB_READ_BUFFER_SIZE=256K
      - MARIADB_READ_RND_BUFFER_SIZE=512K
      - MARIADB_SERVER_ID=1
      - MARIADB_SORT_BUFFER_SIZE=20M
      - MARIADB_TABLE_OPEN_CACHE=64
      - MARIADB_WRITE_BUFFER=2M
      - TZ=America/Los_Angeles
  wp:
    container_name: demyx_wp
    image: demyx/nginx-php-wordpress
    restart: unless-stopped
    networks:
      - demyx
    volumes:
      - demyx_wp:/var/www/html
      - demyx_wp_log:/var/log/demyx
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_NAME=demyx_db
      - WORDPRESS_DB_USER=demyx_user
      - WORDPRESS_DB_PASSWORD=demyx_password
      - WORDPRESS_DOMAIN=domain.tld
      - WORDPRESS_UPLOAD_LIMIT=128M
      - WORDPRESS_PHP_MEMORY=256M
      - WORDPRESS_PHP_MAX_EXECUTION_TIME=300
      - WORDPRESS_PHP_OPCACHE=true
      - WORDPRESS_NGINX_CACHE=false
      - WORDPRESS_NGINX_RATE_LIMIT=false
      - WORDPRESS_NGINX_XMLRPC=false
      - WORDPRESS_NGINX_BASIC_AUTH=demyx:$$apr1$$EqJj89Yw$$WLsBIjCILtBGjHppQ76YT1
      - TZ=America/Los_Angeles
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.domaintld-http.rule=Host(`domain.tld`) || Host(`www.domain.tld`)"
      - "traefik.http.routers.domaintld-http.entrypoints=http"
      #- "traefik.http.routers.domaintld-http.middlewares=domaintld-redirect"
      #- "traefik.http.routers.domaintld-https.rule=Host(`domain.tld`) || Host(`www.domain.tld`)"
      #- "traefik.http.routers.domaintld-https.entrypoints=https"
      #- "traefik.http.routers.domaintld-https.tls.certresolver=demyx"
      #- "traefik.http.middlewares.domaintld-redirect.redirectscheme.scheme=https"
volumes:
  demyx_wp:
    name: demyx_wp
  demyx_wp_log:
    name: demyx_wp_log
  demyx_db:
    name: demyx_db
  demyx_traefik:
    name: demyx_traefik
networks:
  demyx:
    name: demyx

Tag summary

Content type

Image

Digest

Size

33.6 MB

Last updated

about 6 years ago

docker pull demyx/nginx-php-wordpress