1.Dockerfile_wordpress
# This wordpress Dockerfile
# Version 20240222
# Base images 基础镜像
FROM dockerstorage.xxx.com:5533/nginx/nginx-base:latest
#ENV 设置环境变量
#ENV PATH=$HOME/bin:$PATH
#ENV CLASSPATH=.:$CLASSPATH
#ADD 文件放在当前目录下,拷过去会自动解压
ADD latest-zh_CN.tar.gz /home/
ADD nginx.conf /usr/local/nginx/conf/
ADD wp-content/upgrade /home/wordpress/wp-content/upgrade
ADD wp-content/themes /home/wordpress/wp-content/themes
ADD wp-content/plugins /home/wordpress/wp-content/plugins
ADD wp-content/mu-plugins /home/wordpress/wp-content/mu-plugins
ADD wp-content/languages /home/wordpress/wp-content/languages
ADD .htaccess /home/wordpress/
ADD wp-config.php /home/wordpress/
#WORKDIR 相当于cd
WORKDIR /home
RUN chmod -R 777 /home/wordpress
#CMD 运行以下命令
CMD /home/run.sh && tail -f /dev/null
2.docker-compose.yml
# 编排服务(容器),每个服务启动一个镜像
# Time: 20240222
version: '3'
services:
wordpress:
restart: always
# env_file:
# - .env
image: dockerstorage.xxx.com:5533/wordpress/dockerwordpress1:2024v1
build:
context: ./
dockerfile: Dockerfile_wordpress
ports:
- "3301:80"
volumes:
- ./wp-content/uploads:/home/wordpress/wp-content/uploads
- ./wp-content/upgrade:/home/wordpress/wp-content/upgrade
- ./wp-content/themes:/home/wordpress/wp-content/themes
- ./wp-content/plugins:/home/wordpress/wp-content/plugins
- ./wp-content/mu-plugins:/home/wordpress/wp-content/mu-plugins
- ./wp-content/languages:/home/wordpress/wp-content/languages
- ./.htaccess:/home/wordpress/.htaccess
- ./wp-config.php:/home/wordpress/wp-config.php
- ./nginx.conf:/usr/local/nginx/conf/nginx.conf
environment:
- utf8
- TZ=Asia/Shanghai
extra_hosts:
- "dockermysql.xxx.com:host-gateway"
dns:
- 114.114.114.114
- 223.5.5.5
- 8.8.8.8
networks:
- basic
ulimits:
nproc:
soft: 65535
hard: 65535
nofile:
soft: 65535
hard: 65535
networks:
basic:
driver: bridge
3.wp-config.php
/**
* The base configuration for WordPress
*
* The wp-config.php creation script uses this file during the installation.
* You don't have to use the web site, you can copy this file to "wp-config.php"
* and fill in the values.
*
* This file contains the following configurations:
*
* * Database settings
* * Secret keys
* * Database table prefix
* * ABSPATH
*
* @link https://wordpress.org/documentation/article/editing-wp-config-php/
*
* @package WordPress
*/
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
if (strstr($_SERVER['HTTP_HOST'], 'dockerwp1.xxx.com')) {
define( 'DB_NAME', 'xxx' );
/** Database username */
define( 'DB_USER', 'xxx' );
/** Database password */
define( 'DB_PASSWORD', 'xxx' );
/** Database hostname */
define( 'DB_HOST', 'dockermysql.xxx.com:3306' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
} else {
define( 'DB_NAME', 'xxx' );
/** Database username */
define( 'DB_USER', 'xxx' );
/** Database password */
define( 'DB_PASSWORD', 'xxx' );
/** Database hostname */
define( 'DB_HOST', 'dockermysql.xxx.com:3306' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
}
/**#@+
* Authentication unique keys and salts.
*
* Change these to different unique phrases! You can generate these using
* the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
*
* You can change these at any point in time to invalidate all existing cookies.
* This will force all users to have to log in again.
*
* @since 2.6.0
*/
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
/**#@-*/
/**
* WordPress database table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = 'wp_';
/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*
* For information on other constants that can be used for debugging,
* visit the documentation.
*
* @link https://wordpress.org/documentation/article/debugging-in-wordpress/
*/
define( 'WP_DEBUG', false );
/* Add any custom values between this line and the "stop editing" line. */
/*内存配置*/
define('WP_MEMORY_LIMIT', '2048M');
/*域名配置
define( 'SUNRISE', 'on' );*/
/*多站点*/
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
/*子目录*/
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'dockerwp1.xxx.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
/* That's all, stop editing! Happy publishing. */
/* wordpress后台编辑网站地址http改成https后,后台进不去解决办法。
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
$_SERVER['HTTPS'] = 'ON';
define( 'CONCATENATE_SCRIPTS', false );*/
/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}
define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';
4.nginx.conf
user nginx;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 600;
gzip on;
gzip_min_length 4k;
gzip_buffers 8 1024k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain text/javascript text/css text/xml application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
server_names_hash_bucket_size 2048;
client_header_buffer_size 1024k;
large_client_header_buffers 8 1024k;
client_max_body_size 1024M;
client_header_timeout 300;
client_body_timeout 300;
send_timeout 300;
#用于tomcat反向代理,解决nginx 504错误
proxy_connect_timeout 300; #单位秒
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 1024k;
proxy_buffers 8 1024k;
proxy_busy_buffers_size 2048k;
proxy_temp_file_write_size 2048k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 1024k;
fastcgi_buffers 8 1024k;
fastcgi_busy_buffers_size 2048k;
fastcgi_temp_file_write_size 2048k;
# map $http_host $blogid {
# default 0;
# include /home/wordpress/wp-content/uploads/nginx-helper/map.conf;
# }
server {
listen 80;
server_name localhost;
access_log logs/host.access.log main;
root /home/wordpress/;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
# location ~ ^/[_0-9a-zA-Z-]+/files/(.*)$ {
# try_files /wp-content/blogs.dir/$blogid/files/$2 /wp-includes/ms-files.php?file=$2 ;
# access_log off; log_not_found off; expires max;
# }
#avoid php readfile()
location ^~ /blogs.dir {
internal;
alias /home/wordpress/wp-content/blogs.dir ;
access_log off; log_not_found off; expires max;
}
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~.*\.php$ {
root /home/wordpress/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
proxy_redirect off;
#获取到的 Host 包含浏览器请求的 IP
proxy_set_header Host $host;
#获取到的 Host 包含浏览器请求的 IP 和端口
#proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
###允许跨域
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Credentials true;
##禁用缓存
proxy_buffering off;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}