File size: 4,009 Bytes
ca8657b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
efc9636
 
ca8657b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e6e4558
 
ca8657b
 
 
 
 
 
 
 
 
 
 
 
ede938f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Dockerfile optimized for Hugging Face Spaces deployment
# Based on WordPress 6.8.1 with PHP 8.3 Apache

FROM php:8.3-apache

# Set environment variables for HF Spaces
ENV APACHE_DOCUMENT_ROOT=/var/www/html
ENV APACHE_RUN_USER=www-data
ENV APACHE_RUN_GROUP=www-data

# Install system dependencies
RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends \
		ghostscript \
		libfreetype6-dev \
		libicu-dev \
		libjpeg-dev \
		libpng-dev \
		libwebp-dev \
		libzip-dev \
		libsqlite3-dev \
		sqlite3 \
		wget \
		unzip \
	; \
	rm -rf /var/lib/apt/lists/*

# Configure and install PHP extensions
RUN set -ex; \
	docker-php-ext-configure gd \
		--with-freetype \
		--with-jpeg \
		--with-webp \
	; \
	docker-php-ext-install -j "$(nproc)" \
		bcmath \
		exif \
		gd \
		intl \
		mysqli \
		pdo \
		pdo_sqlite \
		zip \
	;

# Configure PHP settings
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

RUN { \
		echo 'error_reporting = E_ERROR | E_WARNING | E_PARSE'; \
		echo 'display_errors = Off'; \
		echo 'log_errors = On'; \
		echo 'error_log = /dev/stderr'; \
		echo 'memory_limit = 256M'; \
		echo 'upload_max_filesize = 32M'; \
		echo 'post_max_size = 32M'; \
	} > /usr/local/etc/php/conf.d/wordpress.ini

# Configure Apache for HF Spaces
RUN set -eux; \
	a2enmod rewrite expires headers; \
	# Configure Apache to listen on port 7860 (HF Spaces requirement)
	sed -i 's/Listen 80/Listen 7860/' /etc/apache2/ports.conf; \
	sed -i 's/:80>/:7860>/' /etc/apache2/sites-available/000-default.conf; \
	# Set ServerName to avoid warnings
	echo 'ServerName localhost' >> /etc/apache2/apache2.conf

# Download and install WordPress
RUN set -eux; \
	version='6.8.1'; \
	sha1='52d5f05c96a9155f78ed84700264307e5dea14b4'; \
	curl -o wordpress.tar.gz -fL "https://wordpress.org/wordpress-$version.tar.gz"; \
	echo "$sha1 *wordpress.tar.gz" | sha1sum -c -; \
	tar -xzf wordpress.tar.gz -C /usr/src/; \
	rm wordpress.tar.gz; \
	cp -a /usr/src/wordpress/. /var/www/html/; \
	chown -R www-data:www-data /var/www/html

# Install SQLite integration plugin for WordPress
RUN set -eux; \
	wget -O sqlite-plugin.zip "https://downloads.wordpress.org/plugin/sqlite-database-integration.2.1.15.zip"; \
	unzip sqlite-plugin.zip -d /var/www/html/wp-content/plugins/; \
	rm sqlite-plugin.zip; \
	chown -R www-data:www-data /var/www/html/wp-content/plugins/sqlite-database-integration

# Create WordPress configuration for SQLite
COPY wp-config-hf.php /var/www/html/wp-config.php
COPY db.php /var/www/html/wp-content/db.php
COPY error-debug.php /var/www/html/debug.php
COPY test-php.php /var/www/html/test.php

# Create .htaccess for pretty permalinks
RUN { \
		echo '# BEGIN WordPress'; \
		echo 'RewriteEngine On'; \
		echo 'RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]'; \
		echo 'RewriteBase /'; \
		echo 'RewriteRule ^index\.php$ - [L]'; \
		echo 'RewriteCond %{REQUEST_FILENAME} !-f'; \
		echo 'RewriteCond %{REQUEST_FILENAME} !-d'; \
		echo 'RewriteRule . /index.php [L]'; \
		echo '# END WordPress'; \
	} > /var/www/html/.htaccess

# Create necessary directories with proper permissions
RUN mkdir -p /var/www/html/wp-content/database && \
    mkdir -p /var/www/html/wp-content/uploads && \
    mkdir -p /var/www/html/wp-content/cache && \
    chown -R www-data:www-data /var/www/html && \
    chmod -R 777 /var/www/html && \
    chmod 644 /var/www/html/.htaccess

# Add user for HF Spaces compatibility
RUN usermod -u 1000 www-data && groupmod -g 1000 www-data

# Expose port 7860 for Hugging Face Spaces
EXPOSE 7860

# Copy startup script
COPY start-hf.sh /usr/local/bin/start-hf.sh
RUN chmod +x /usr/local/bin/start-hf.sh

# Start Apache
CMD ["/usr/local/bin/start-hf.sh"]