creativecommons / wp-plugin-creativecommons

Official Creative Commons plugin for licensing your content. With Creative Commons licenses, keep your copyright AND share your creativity.
https://wordpress.org/plugins/creative-commons/
GNU General Public License v2.0
154 stars 105 forks source link

Docker-compose for easy development environment? #154

Closed brylie closed 2 years ago

brylie commented 3 years ago

Problem

There are several steps required to begin developing this extension, such as

  1. set up WordPress, a web server, and database locally
  2. configure phpcs for WordPress coding standards
  3. configure code standards in IDE

Each of these steps can prove to be problematic.

Description

Adding a Docker compose file can help make some of the above steps easier. For example, a basic Docker-compose file can create a WordPress/Apache/MariaDB development environment in one command. The WordPress Docker container can automatically install the WordPress coding standards plugin via composer.

Developers would want a choice of IDE. However, it is possible to configure VS Code to develop within a Docker container. For extra simplicity, we can serve a VS Code Code Server instance from within a Docker container pre-configured with PHP-related extensions.

This issue proposes to create a docker-compose.yml and possibly an extended WordPress Dockerfile within the dev folder.

Alternatives

I've tried XAMPP locally. It brought back memories and is a good tool. However, it was somewhat quirky and posed issues with permissions, configuration, and debugging.

Implementation

brylie commented 3 years ago

For reference, here is the docker-compose.yml I used to start developing wp-plugin-creativecommons.

# /wordpress-docker/docker-compose.yml
---
version: '3.3'
services:
    db:
        container_name: 'local-wordpress-db'
        image: 'mysql:5.7'
        volumes:
          - './data/mysql:/var/lib/mysql'
        ports:
          - 18766:3306
        environment:
          MYSQL_ROOT_PASSWORD: test1234
          MYSQL_DATABASE: wordpress_db
          MYSQL_USER: wordpress_user
          MYSQL_PASSWORD: test1234
    wordpress:
        container_name: 'local-wordpress'
        depends_on:
            - db
        image: 'wordpress:latest'
        ports:
            - '80:80'
        environment:
            WORDPRESS_DB_HOST: 'db:3306'
            WORDPRESS_DB_USER: wordpress_user
            WORDPRESS_DB_PASSWORD: test1234
            WORDPRESS_DB_NAME: wordpress_db
        volumes:
            - "./wordpress:/var/www/html"
            - "./plugins:/var/www/html/wp-content/plugins"

This Dockerfile would need some changes to streamline the development process outlined above, such as mounting the wp-plugin-creativecommons code within the plugins directory.

brylie commented 3 years ago

We might include a .devcontainer directory with Dockerfile and docker-compose.yml for developers who use the VS Code Remote Containers extension.

Edit: the .devcontainer directory doesn't need to include the Dockerfile or docker-compose.yml, since the location of the files can be set as a relative path in devcontainer.json

https://code.visualstudio.com/docs/remote/devcontainerjson-reference

TimidRobot commented 3 years ago

[...]

This Dockerfile would need some changes to streamline the development process outlined above, such as mounting the wp-plugin-creativecommons code within the plugins directory.

@brylie Also, I think it should use an unprivileged port:

        ports:
            - '8080:80'
possumbilities commented 2 years ago

This Issue is rather large in scope, splitting it off into smaller incremental issues:

Note: VS Code support is not a priority, at this time.