Docker-compose 编排lnmp(dockerfile) 完成Wordpress

使用Docker Compose编排LNMP(Linux, Nginx, MySQL, PHP)环境并部署WordPress,是一个非常高效的解决方案。本文将详细介绍如何编写Dockerfile和docker-compose.yml文件来完成这一任务。

环境准备

确保已经安装了以下工具:

  • Docker
  • Docker Compose

创建项目目录结构

首先,创建一个项目目录,并在其中创建所需的文件和子目录。

复制代码
lnmp-wordpress/
├── docker-compose.yml
├── nginx/
│   ├── Dockerfile
│   └── nginx.conf
├── php/
│   └── Dockerfile
└── wordpress/
    ├── Dockerfile
    └── wp-config.php
​

编写Nginx的Dockerfile和配置文件

nginx/Dockerfile

复制代码
FROM nginx:latest
COPY nginx.conf /etc/nginx/nginx.conf
​

nginx/nginx.conf

复制代码
server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /.ht {
        deny all;
    }
}
​

编写PHP的Dockerfile

php/Dockerfile

复制代码
FROM php:7.4-fpm
RUN docker-php-ext-install mysqli
​

编写WordPress的Dockerfile和配置文件

wordpress/Dockerfile

复制代码
FROM wordpress:latest
COPY wp-config.php /var/www/html/wp-config.php
​

wordpress/wp-config.php

复制代码
<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'mysql');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

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');

$table_prefix = 'wp_';

define('WP_DEBUG', false);

if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

require_once(ABSPATH . 'wp-settings.php');
​

编写Docker Compose文件

docker-compose.yml

复制代码
version: '3.8'

services:
  nginx:
    build:
      context: ./nginx
    ports:
      - "80:80"
    volumes:
      - ./wordpress:/var/www/html
    depends_on:
      - php
      - mysql

  php:
    build:
      context: ./php
    volumes:
      - ./wordpress:/var/www/html

  mysql:
    image: mysql:5.7
    volumes:
      - mysql_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress

  wordpress:
    build:
      context: ./wordpress
    volumes:
      - ./wordpress:/var/www/html
    depends_on:
      - mysql

volumes:
  mysql_data:
​

启动服务

在项目根目录中运行以下命令启动服务:

复制代码
docker-compose up -d
​

该命令将构建和启动Nginx、PHP、MySQL和WordPress容器。启动完成后,可以在浏览器中访问 http://localhost来设置和使用WordPress。

总结

通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。

相关推荐
春日见6 分钟前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
vistaup13 分钟前
OKHTTP 默认构建包含 android 4.4 的TLS 1.2 以及设备时间不对兼容
android·okhttp
DARLING Zero two♡14 分钟前
告别 Docker 命令行!Portainer+cpolar 让容器管理从局域网走向公网
运维·docker·容器
常利兵19 分钟前
ButterKnife在Android 35 + Gradle 8.+环境下的适配困境与现代化迁移指南
android
撩得Android一次心动20 分钟前
Android LiveData 全面解析:使用Java构建响应式UI【源码篇】
android·java·android jetpack·livedata
熊猫钓鱼>_>28 分钟前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端
liu****1 小时前
2.深入浅出理解虚拟化与容器化(含Docker实操全解析)
运维·c++·docker·容器·虚拟化技术
logocode_li2 小时前
OCI/CRI 双标准下:从 dockerd 到 containerd 的 K8s 运行时迭代史
docker·云原生·容器·k8s
Rainman博11 小时前
WMS-窗口relayout&FinishDrawing
android
baidu_2474386113 小时前
Android ViewModel定时任务
android·开发语言·javascript