更新docker容器内的wordpress插件

时间:2014-04-20 09:57:53

标签: wordpress wordpress-plugin docker

以下是我的情景:

我一直在开发一个经常修改的插件,我需要使用docker创建一个图像,在其中安装一个新版本的wordpress然后从开发环境导入所有数据库和插件,(插件是在github上)

我设法使用https://github.com/eugeneware/docker-wordpress-nginx

在docker上安装wordpress

现在我的问题是:

1 - 是否有任何方法可以在wordpress文件和文件夹安装到docker中后进行修改(用于安装插件和使用命令行,而不是wordpress GUI)

2 - 如果我想实现上面解释的最佳工作流程是什么?

2 个答案:

答案 0 :(得分:5)

您问题的两个可能答案。我现在也在努力解决这个问题,所以YMMV。

首先,如果你在主机上运行Docker容器,你可以随时暂停它docker pause,从正在运行的容器docker commit创建一个新映像,然后将其推送到私有容器存储库docker push(实时Wordpress安装可能不适合公共Docker Hub)。完成后,您可以恢复容器docker unpause,然后您可以在开发系统上更新映像。然后在升级完成后进行测试并且一切正常,然后docker pull图像并重新启动您的服务,以便它使用新图像。

不是一个好的解决方案,但它会起作用。

根据Tadeusz的评论,我不一定要从数据卷运行整个WP安装。它们是易变的,如果由于任何原因,您的容器被删除并且它是唯一引用数据卷的容器,那么您将丢失所有内容(除非您保留多个备份 - 您执行保留多个备份,对吗?)

我考虑的另一个解决方案是将插件更改部署为Dockerfile的一部分。这是一种更加慎重的方法,但可以进行webhooked,以便在您提交Github存储库时自动构建新的Docker镜像。有关于执行自动构建过程here的讨论。 如上所述,您最终托管服务器管理员端需要提取新图像。并完成了。

当然,设置它可以作为开发系统的练习。

干杯!

答案 1 :(得分:1)

晚会,但我已经得到了一个很好的解决方案。它没有被其他答案所涵盖,也应该对未来的读者有用。

我在ec2 t2-micro盒子上舒服地操作它,到目前为止,它的工作非常完美。 Wordpress,mySQL和Nginx都安装在自己的容器中(通过Docker compose),Docker卷用于维护mySQL和Wordpress状态。有关从here获取的Nginx设置的代码和其他信息。

搬运工-compose.yml:

version: '3.6'

 services:
    db:
      image: mysql:5.7
      volumes:
        - db_data:/var/lib/mysql
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: db_root_pass
        MYSQL_DATABASE: db
        MYSQL_USER: db_user
        MYSQL_PASSWORD: db_pass
    nginx:
      depends_on:
        - wordpress
      image: nginx:latest
      restart: always
      ports:
        - "80:80"
      volumes:
        - ./nginx.conf:/etc/nginx/nginx.conf
    wordpress:
      depends_on:
        - db
      volumes:
        - wp_data:/var/www/html/wp-content
      image: wordpress:latest
      restart: always
      environment:
        WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_USER: db_user
        WORDPRESS_DB_PASSWORD: db_pass
 volumes:
    db_data:
    wp_data:

db_data卷映射到mySQL容器中的mySQL数据目录,wp_data卷映射到Wordpress容器中的Wordpress内容目录。您可以做的是配置CLI以写入主机上的wp_data目录,这些更改将在Wordpress站点上显示,而无需重建任何容器!