真诚友善团结专业,共建你我引以为荣之社区。《常见问题解答》
❤️ 再忍不住,也不要做这种事啊 ❤️
1 / 3
5月 14 日

mysql 8.4.5 准备

1.创建目录

mkdir -p /data/wordpress mkdir -p /data/mysql8/{etc/mysql/conf.d,data,logs,files} sudo chown -R 999:999 /data/mysql8/data /data/mysql8/logs /data/mysql8/files sudo chmod -R 755 /data/mysql8/data /data/mysql8/logs /data/mysql8/files

2.创建配置 /data/mysql8/etc/mysql/conf.d/my.cnf

[mysqld] user = mysql secure_file_priv = /var/lib/mysql-files bind-address = 0.0.0.0 datadir = /var/lib/mysql pid-file = /var/run/mysqld/mysqld.pid character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci innodb_buffer_pool_size = 512M innodb_redo_log_capacity = 536870912 default-time_zone = '+8:00'

配置文件赋权

sudo chown 999:999 /data/mysql8/etc/mysql/conf.d/my.cnf sudo chmod 644 /data/mysql8/etc/mysql/conf.d/my.cnf

wordpress镜像构建

官方的wordpress默认上传文件大小有限制,且官方wordpress-6.8.1镜像最低版本php8.1,
而安装RiPro-V5主题最好使用php7.4,否则可能版本不兼容,比如图片验证码功能失效,这个主题还依赖swoole_loader,
所以干脆直接重新构建一个镜像,Dockerfile可参考官方链接 GitHub - docker-library/wordpress: Docker Official Image packaging for WordPress
swoole-loader下载地址:https://compiler.swoole.com/encryptor/download/

FROM php:7.4-apache # Install system dependencies RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ libwebp-dev \ libicu-dev \ default-libmysqlclient-dev \ libzip-dev \ libmagickwand-6.q16-dev \ curl \ ; \ rm -rf /var/lib/apt/lists/* # Install PHP extensions RUN set -eux; \ docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp; \ docker-php-ext-install -j "$(nproc)" \ bcmath \ exif \ gd \ intl \ mysqli \ opcache \ pdo_mysql \ zip \ ; \ pecl install imagick-3.4.4; \ docker-php-ext-enable imagick # Set recommended PHP.ini settings for Opcache RUN { \ echo 'opcache.memory_consumption=128'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=4000'; \ echo 'opcache.revalidate_freq=2'; \ } > /usr/local/etc/php/conf.d/opcache-recommended.ini # Set custom PHP.ini settings COPY swoole_loader_74_nts.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/swoole_loader_74_nts.so RUN { \ echo 'file_uploads = On'; \ echo 'memory_limit = 256M'; \ echo 'upload_max_filesize = 10M'; \ echo 'post_max_size = 10M'; \ echo 'max_execution_time = 600'; \ echo 'extension=swoole_loader_74_nts.so'; \ } > /usr/local/etc/php/conf.d/custom.ini # Install WordPress ENV WORDPRESS_VERSION=6.8.1 RUN set -eux; \ curl -o wordpress.tar.gz -SL "https://wordpress.org/wordpress-6.8.1.tar.gz" && \ tar -xzf wordpress.tar.gz -C /usr/src/; \ mv /usr/src/wordpress /usr/src/wordpress-${WORDPRESS_VERSION}; \ rm wordpress.tar.gz; \ chown -R www-data:www-data /usr/src/wordpress-${WORDPRESS_VERSION} # Configure Apache COPY apache.conf /etc/apache2/sites-available/000-default.conf RUN a2enmod rewrite headers # Set working directory WORKDIR /usr/src/wordpress-${WORDPRESS_VERSION} # Expose port EXPOSE 80 # Set the entrypoint CMD ["apache2-foreground"]

docker build -t 2011820123/wordpress:6.8.1-php7.4 .

docker-compose启动服务

vi docker-compose.yaml

version: '3.3' services: wordpress: image: 2011820123/wordpress:6.8.1-php7.4 container_name: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: mysql:3306 WORDPRESS_DB_USER: bbs WORDPRESS_DB_PASSWORD: RGVsWi7imyHAen1Y7 WORDPRESS_DB_NAME: bbsgo_db WORDPRESS_TABLE_PREFIX: wp_ volumes: - /data/wordpress:/var/www/html depends_on: - mysql networks: - app_network mysql: image: mysql:8.4.5 container_name: mysql command: --lower-case-table-names=1 restart: always environment: MYSQL_ROOT_PASSWORD: RGVsWi7imyHAen1Y7 MYSQL_USER: bbs MYSQL_PASSWORD: RGVsWi7imyHAen1Y7 MYSQL_DATABASE: bbsgo_db TZ: Asia/Shanghai volumes: - /data/mysql8/etc/mysql/conf.d/my.cnf:/etc/mysql/conf.d/my.cnf - /data/mysql8/data:/var/lib/mysql - /data/mysql8/logs:/var/log/mysql - /data/mysql8/files:/var/lib/mysql-files healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"] interval: 10s timeout: 5s retries: 3 deploy: resources: limits: memory: 4G networks: - app_network networks: app_network: driver: bridge

创建、删除、重启

docker-compose up -d docker-compose down docker-compose restart

宿主机配置nginx

wordpress.conf

server { listen 80; server_name www.xuexiemeng.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.xuexiemeng.com; ssl_certificate /etc/letsencrypt/live/xueximeng.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/xueximeng.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ssl_prefer_server_ciphers on; client_max_body_size 50m; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } }

重启nginx,使配置生效

systemctl reload nginx

不想折腾构建镜像的,可以直接使用
2011820123/wordpress:6.8.1-php7.4

此话题将在最后一个回复的1 个月后关闭。