Skip to content

Latest commit

 

History

History
 
 

tag-wp-alpine

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

code-server:wp-alpine

Architecture Alpine code-server Buy Me A Coffee

code-server optimized for WordPress development. Example YAML comes with pre-configured development tools: BrowserSync and phpMyAdmin. Also comes with Xdebug.

DEMYX CODE-SERVER:WP-ALPINE
PORT 8080 9000 9001
USER demyx
WORKDIR /demyx
CONFIG /etc/demyx
ENTRYPOINT ["dumb-init", "demyx"]
SHELL zsh
SHELL THEME Oh My Zsh "ys"
WORDPRESS https://domain.tld
CODE-SERVER https://domain.tld/demyx/cs/
BROWSER-SYNC https://domain.tld/demyx/bs/
PHPMYADMIN https://domain.tld/demyx/pma/

Environment Variables

# code-server

- PASSWORD=demyx
- CODE_SERVER_BASE_PATH=/demyx
- CODE_SERVER_ROOT=/demyx
- CODE_SERVER_CONFIG=/etc/demyx
- CODE_SERVER_LOG=/var/log/demyx
- WORDPRESS_DB_HOST=domaintld_db
- WORDPRESS_DB_NAME=demyx
- WORDPRESS_DB_USER=demyx
- WORDPRESS_DB_PASSWORD=demyx
- WORDPRESS_ADMIN_USER=demyx
- WORDPRESS_ADMIN_PASSWORD=demyx
- [email protected]
- WORDPRESS_DOMAIN=https://domain.tld
- WORDPRESS_UPLOAD_LIMIT=128M
- WORDPRESS_PHP_MEMORY=256M
- WORDPRESS_PHP_MAX_EXECUTION_TIME=300
- WORDPRESS_PHP_PM=ondemand
- WORDPRESS_PHP_PM_MAX_CHILDREN=100
- WORDPRESS_PHP_PM_START_SERVERS=10
- WORDPRESS_PHP_PM_MIN_SPARE_SERVERS=5
- WORDPRESS_PHP_PM_MAX_SPARE_SERVERS=25
- WORDPRESS_PHP_PM_PROCESS_IDLE_TIMEOUT=5s
- WORDPRESS_PHP_PM_MAX_REQUESTS=500
- TZ=America/Los_Angeles
# browser-sync

- BROWSERSYNC_DOMAIN_MATCH=https://domain.tld
- BROWSERSYNC_DOMAIN_RETURN=https://domain.tld
- BROWSERSYNC_DOMAIN_SOCKET=https://domain.tld
- BROWSERSYNC_PROXY=demyx_nginx
- BROWSERSYNC_FILES=["/demyx/wp-content/themes/**/*", "/demyx/wp-content/plugins/**/*"]
- BROWSERSYNC_PATH=/demyx
- BROWSERSYNC_PREFIX=/bs
- BROWSERSYNC_PORT=3000
# phpmyadmin

- PMA_HOST=demyx_db
- MYSQL_ROOT_PASSWORD=demyx
- PMA_ABSOLUTE_URI=https://domain.tld/demyx/pma/
# nginx

- WORDPRESS=true
- WORDPRESS_CONTAINER=demyx_wp
- WORDPRESS_CONTAINER_PORT=9000
- NGINX_ROOT=/demyx
- NGINX_CONFIG=/etc/demyx
- NGINX_LOG=/var/log/demyx
- NGINX_DOMAIN=domain.tld
- NGINX_CACHE=false
- NGINX_UPLOAD_LIMIT=128M
- NGINX_RATE_LIMIT=false
- NGINX_XMLRPC=false
- TZ=America/Los_Angeles
# mariadb

- MARIADB_DATABASE=demyx
- MARIADB_USERNAME=demyx
- MARIADB_PASSWORD=demyx
- MARIADB_ROOT_PASSWORD=demyx # Required
- MARIADB_ROOT=/demyx
- MARIADB_CONFIG=/etc/demyx
- MARIADB_LOG=/var/log/demyx
- 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_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

Usage

  • Configured for remote VPS
  • Ports 80 and 443 must be open when using Traefik
  • TLS/SSL enabled by default
# Demyx
# https://demyx.sh
#
# Be sure to change all the domain.tld domains and credentials
#
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
      - TRAEFIK_CERTIFICATESRESOLVERS_DEMYX_ACME_HTTPCHALLENGE=true
      - TRAEFIK_CERTIFICATESRESOLVERS_DEMYX_ACME_HTTPCHALLENGE_ENTRYPOINT=http
      - [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 https://traefik.domain.tld
      - "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.middlewares.traefik-redirect.redirectscheme.scheme=https"
      - "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" # Password: demyx
  demyx_db:
    container_name: demyx_db
    image: demyx/mariadb
    restart: unless-stopped
    networks:
      - demyx
    volumes:
      - demyx_db:/demyx
    environment:
      - MARIADB_DATABASE=demyx
      - MARIADB_USERNAME=demyx
      - MARIADB_PASSWORD=demyx
      - MARIADB_ROOT_PASSWORD=demyx # Required
      - MARIADB_ROOT=/demyx
      - MARIADB_CONFIG=/etc/demyx
      - MARIADB_LOG=/var/log/demyx
      - 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_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
  demyx_nginx:
    container_name: demyx_nginx
    image: demyx/nginx
    restart: unless-stopped
    networks:
      - demyx
    depends_on:
      - demyx_wp
    volumes:
      - demyx_wp:/demyx
      - demyx_log:/var/log/demyx
    environment:
      - WORDPRESS=true
      - WORDPRESS_CONTAINER=demyx_wp
      - WORDPRESS_CONTAINER_PORT=9000
      - NGINX_ROOT=/demyx
      - NGINX_CONFIG=/etc/demyx
      - NGINX_LOG=/var/log/demyx
      - NGINX_DOMAIN=domain.tld
      - NGINX_CACHE=false
      - NGINX_UPLOAD_LIMIT=128M
      - NGINX_RATE_LIMIT=false
      - NGINX_XMLRPC=false
      - TZ=America/Los_Angeles
    labels:
      # wordpress https://domain.tld
      - "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.middlewares.domaintld-redirect.redirectscheme.scheme=https"
      - "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"
  demyx_pma:
    image: phpmyadmin/phpmyadmin
    container_name: demyx_pma
    restart: unless-stopped
    networks:
      - demyx
    depends_on:
      - demyx_wp
    environment:
      - PMA_HOST=demyx_db
      - MYSQL_ROOT_PASSWORD=demyx
      - PMA_ABSOLUTE_URI=https://domain.tld/demyx/pma/
    labels:
      # phpmyadmin https://domain.tld/demyx/pma/
      - "traefik.enable=true"
      - "traefik.http.routers.domaintld-pma.rule=(Host(`domain.tld`) && PathPrefix(`/demyx/pma/`))"
      - "traefik.http.routers.domaintld-pma.entrypoints=https"
      - "traefik.http.routers.domaintld-pma.middlewares=domaintld-pma-prefix"
      - "traefik.http.middlewares.domaintld-pma-prefix.stripprefix.prefixes=/demyx/pma/"
      - "traefik.http.routers.domaintld-pma.priority=99"
      - "traefik.http.routers.domaintld-pma.tls.certresolver=demyx"
  demyx_bs:
    image: demyx/browsersync
    container_name: demyx_bs
    restart: unless-stopped
    networks:
      - demyx
    depends_on:
      - demyx_cs
    volumes:
      - demyx_wp:/demyx
    environment:
      - BROWSERSYNC_DOMAIN_MATCH=https://domain.tld
      - BROWSERSYNC_DOMAIN_RETURN=https://domain.tld
      - BROWSERSYNC_DOMAIN_SOCKET=https://domain.tld
      - BROWSERSYNC_PROXY=demyx_nginx
      - BROWSERSYNC_FILES=["/demyx/wp-content/themes/**/*", "/demyx/wp-content/plugins/**/*"]
      - BROWSERSYNC_PATH=/demyx
      - BROWSERSYNC_PREFIX=/bs
      - BROWSERSYNC_PORT=3000
    labels:
      # browser-sync https://domain.tld/demyx/bs/
      - "traefik.enable=true"
      - "traefik.http.routers.domaintld-bs-https.rule=(Host(`domain.tld`) && PathPrefix(`/demyx/bs/`))"
      - "traefik.http.routers.domaintld-bs-https.entrypoints=https"
      - "traefik.http.routers.domaintld-bs-https.middlewares=domaintld-bs-prefix"
      - "traefik.http.middlewares.domaintld-bs-prefix.stripprefix.prefixes=/demyx/bs/"
      - "traefik.http.routers.domaintld-bs-https.service=domaintld-bs"
      - "traefik.http.services.domaintld-bs.loadbalancer.server.port=3000"
      - "traefik.http.routers.domaintld-bs-https.priority=99"
      - "traefik.http.routers.domaintld-bs-https.tls.certresolver=demyx"
      # browser-sync socket
      - "traefik.http.routers.domaintld-socket-https.rule=(Host(`domain.tld`) && PathPrefix(`/browser-sync/socket.io/`))"
      - "traefik.http.routers.domaintld-socket-https.entrypoints=https"
      - "traefik.http.routers.domaintld-socket-https.middlewares=domaintld-socket-prefix"
      - "traefik.http.middlewares.domaintld-socket-prefix.stripprefix.prefixes=/demyx/bs/browser-sync/socket.io/"
      - "traefik.http.routers.domaintld-socket-https.service=domaintld-socket"
      - "traefik.http.services.domaintld-socket.loadbalancer.server.port=3000"
      - "traefik.http.routers.domaintld-socket-https.priority=99"
      - "traefik.http.routers.domaintld-socket-https.tls.certresolver=demyx"
  demyx_cs:
    container_name: demyx_cs
    image: demyx/code-server:wp-alpine
    restart: unless-stopped
    hostname: domaintld
    networks:
      - demyx
    depends_on:
      - demyx_wp
    volumes:
      - demyx_user:/home/demyx
      - demyx_wp:/demyx
      - demyx_log:/var/log/demyx
    environment:
      - PASSWORD=demyx
      - CODE_SERVER_BASE_PATH=/demyx
      - CODE_SERVER_ROOT=/demyx
      - CODE_SERVER_CONFIG=/etc/demyx
      - CODE_SERVER_LOG=/var/log/demyx
      - WORDPRESS_DB_HOST=domaintld_db
      - WORDPRESS_DB_NAME=demyx
      - WORDPRESS_DB_USER=demyx
      - WORDPRESS_DB_PASSWORD=demyx
      - WORDPRESS_ADMIN_USER=demyx
      - WORDPRESS_ADMIN_PASSWORD=demyx
      - [email protected]
      - WORDPRESS_DOMAIN=https://domain.tld
      - WORDPRESS_UPLOAD_LIMIT=128M
      - WORDPRESS_PHP_MEMORY=256M
      - WORDPRESS_PHP_MAX_EXECUTION_TIME=300
      - WORDPRESS_PHP_PM=ondemand
      - WORDPRESS_PHP_PM_MAX_CHILDREN=100
      - WORDPRESS_PHP_PM_START_SERVERS=10
      - WORDPRESS_PHP_PM_MIN_SPARE_SERVERS=5
      - WORDPRESS_PHP_PM_MAX_SPARE_SERVERS=25
      - WORDPRESS_PHP_PM_PROCESS_IDLE_TIMEOUT=5s
      - WORDPRESS_PHP_PM_MAX_REQUESTS=500
      - TZ=America/Los_Angeles
    labels:
      # code-server https://domain.tld/demyx/cs/
      - "traefik.enable=true"
      - "traefik.http.routers.domaintld-cs-https.rule=(Host(`domain.tld`) && PathPrefix(`/demyx/cs/`))"
      - "traefik.http.routers.domaintld-cs-https.entrypoints=https"
      - "traefik.http.routers.domaintld-cs-https.middlewares=domaintld-cs-prefix"
      - "traefik.http.middlewares.domaintld-cs-prefix.stripprefix.prefixes=/demyx/cs/"
      - "traefik.http.routers.domaintld-cs.service=domaintld-cs"
      - "traefik.http.services.domaintld-cs.loadbalancer.server.port=8080"
      - "traefik.http.routers.domaintld-cs-https.priority=99"
      - "traefik.http.routers.domaintld-cs-https.tls.certresolver=demyx"
volumes:
  demyx_wp:
    name: demyx_wp
  demyx_db:
    name: demyx_db
  demyx_log:
    name: demyx_log
  demyx_user:
    name: demyx_user
  demyx_traefik:
    name: demyx_traefik
networks:
  demyx:
    name: demyx

Updates & Support

Code Size Repository Size Watches Stars Forks

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