Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker Wordpress can't update/install plugins [closed]

I followed this giude to install wordpress in a container for test purposes but using mariadb and linux as a host. Here is my docker-compose:

version: '3.8'

services: 
    database:
        image: mariadb
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: wordpressDB
            MYSQL_USER: user
            MYSQL_PASSWORD: password
        volumes:
            - mysql:/var/lib/mysql
    
    wordpress:
        depends_on: 
            - database
        links: 
            - database
        image: wordpress:latest
        restart: always
        ports: 
            - '8000:80'
        environment: 
            WORDPRESS_DB_HOST: database:3306
            WORDPRESS_DB_USER: user
            WORDPRESS_DB_PASSWORD: password
            WORDPRESS_DB_NAME: wordpressDB
        volumes: 
            - ./wordpress:/var/www/html
            - ./wordpress/plugins:/var/www/html/wp-content/plugins
            - ./wordpress/themes:/var/www/html/wp-content/themes
            - ./wordpress/uploads:/var/www/html/wp-content/uploads
            - ./wordpress/wp-content:/var/www/html/wp-content

volumes: 
    mysql: {}

For now I can access the wp-admin dashboard but can't update/install any plugin with error:

Could not create directory.

As mentioned here I've tried to change the permissions of the folders but with no success:

$ mkdir /var/www/html/wp-content/plugins
$ mkdir /var/www/html/wp-content/uploads
$ chown -R www-data:www-data /var/www
$ find /var/www/ -type d -exec chmod 0755 {} \;
$ find /var/www/ -type f -exec chmod 644 {} \;

Here is the output from ls -l

-rwxrwxr-x 1 1000 985   405 Jul 12 06:30 index.php
-rwxrwxr-x 1 1000 985 19915 Jul 12 06:30 license.txt
drwxrwxr-x 1 1000 985     0 Jul 12 06:30 plugins
-rwxrwxr-x 1 1000 985  7345 Jul 12 06:30 readme.html
drwxrwxr-x 1 1000 985     0 Jul 12 06:30 themes
drwxrwxr-x 1 1000 985     0 Jul 12 06:30 uploads
-rwxrwxr-x 1 1000 985  7165 Jul 12 06:30 wp-activate.php
drwxrwxr-x 1 1000 985 20480 Jul 12 06:30 wp-admin
-rwxrwxr-x 1 1000 985   351 Jul 12 06:30 wp-blog-header.php
-rwxrwxr-x 1 1000 985  2328 Jul 12 06:30 wp-comments-post.php
-rwxrwxr-x 1 1000 985  5456 Jul 12 06:30 wp-config-docker.php
-rwxrwxr-x 1 1000 985  2913 Jul 12 06:30 wp-config-sample.php
-rwxrwxr-x 1 1000 985  5592 Jul 12 07:03 wp-config.php
drwxrwxr-x 1 1000 985     0 Jul 12 06:30 wp-content
-rwxrwxr-x 1 1000 985  3939 Jul 12 06:30 wp-cron.php
drwxrwxr-x 1 1000 985 40960 Jul 12 06:30 wp-includes
-rwxrwxr-x 1 1000 985  2496 Jul 12 06:30 wp-links-opml.php
-rwxrwxr-x 1 1000 985  3313 Jul 12 06:30 wp-load.php
-rwxrwxr-x 1 1000 985 44994 Jul 12 06:30 wp-login.php
-rwxrwxr-x 1 1000 985  8509 Jul 12 06:30 wp-mail.php
-rwxrwxr-x 1 1000 985 21125 Jul 12 06:30 wp-settings.php
-rwxrwxr-x 1 1000 985 31328 Jul 12 06:30 wp-signup.php
-rwxrwxr-x 1 1000 985  4747 Jul 12 06:30 wp-trackback.php
-rwxrwxr-x 1 1000 985  3236 Jul 12 06:30 xmlrpc.php

Where am I mistaken?

like image 501
Tony Avatar asked Jul 09 '26 11:07

Tony


2 Answers

get docker container name

sudo docker ps
// output wordpress

interactive with container shell

docker exec -it wordpress /bin/bash

give permission to the user

chown -R www-data:www-data /var/www/html

exit the shell

exit
like image 191
Ahmed Elsayed Avatar answered Jul 12 '26 08:07

Ahmed Elsayed


After a bit of digging, the problem is with this line that I added in my config.php that removed the missing FTP error when I started the container:

define('FS_METHOD', 'direct');

After that I tried many times to chown the directories of the site, with no success. Which is strange because I used the root account to change them. However they remained to group users.

In the end I added the www-data user to users and root (just in case) groups and that solved the problem.

usermod -a -G users www-data
usermod -a -G root www-data

Update

Another solution I found is instead of using a bind volume ./wordpress to use normal volume wordpress with read/write permissions. Here is the new docker-compose:

wordpress:
        depends_on: 
            - database
        links: 
            - database
        image: wordpress:latest
        restart: always
        read_only: false
        ports: 
            - '8000:80'
        environment: 
            WORDPRESS_DB_HOST: database:3306
            WORDPRESS_DB_USER: user
            WORDPRESS_DB_PASSWORD: password
            WORDPRESS_DB_NAME: database
        volumes: 
            - wordpress:/var/www/html:rw

After the mentioned change the output of ls -l for the folders is like this:

-rw-r--r-- 1 www-data www-data   405 Feb  6  2020 index.php
-rw-r--r-- 1 www-data www-data 19915 Jan  1  2021 license.txt
-rw-r--r-- 1 www-data www-data  7345 Dec 29  2020 readme.html
-rw-r--r-- 1 www-data www-data  7165 Jan 21 01:37 wp-activate.php
drwxr-xr-x 1 www-data www-data  2668 May 12 23:49 wp-admin
-rw-r--r-- 1 www-data www-data   351 Feb  6  2020 wp-blog-header.php
-rw-r--r-- 1 www-data www-data  2328 Feb 17 13:08 wp-comments-post.php
-rw-rw-r-- 1 www-data www-data  5456 Jul  2 02:02 wp-config-docker.php
-rw-r--r-- 1 www-data www-data  2913 Feb  6  2020 wp-config-sample.php
-rw-r--r-- 1 www-data www-data  5560 Jul 15 07:30 wp-config.php
drwxr-xr-x 1 www-data www-data    54 May 12 23:49 wp-content
-rw-r--r-- 1 www-data www-data  3939 Jul 30  2020 wp-cron.php
drwxr-xr-x 1 www-data www-data  8378 May 12 23:49 wp-includes
-rw-r--r-- 1 www-data www-data  2496 Feb  6  2020 wp-links-opml.php
-rw-r--r-- 1 www-data www-data  3313 Jan 10  2021 wp-load.php
-rw-r--r-- 1 www-data www-data 44994 Apr  4 18:34 wp-login.php
-rw-r--r-- 1 www-data www-data  8509 Apr 14  2020 wp-mail.php
-rw-r--r-- 1 www-data www-data 21125 Feb  2 00:10 wp-settings.php
-rw-r--r-- 1 www-data www-data 31328 Jan 27 21:03 wp-signup.php
-rw-r--r-- 1 www-data www-data  4747 Oct  8  2020 wp-trackback.php
-rw-r--r-- 1 www-data www-data  3236 Jun  8  2020 xmlrpc.php

Now wordpress updates/installs plugins and the update of wordpress itself is working flawlessly.

like image 43
Tony Avatar answered Jul 12 '26 08:07

Tony



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!