wodby / docker4wordpress

Docker-based WordPress stack
https://wodby.com/docker4wordpress
MIT License
740 stars 217 forks source link

Fix mounted codebase user permission #30

Closed cesco69 closed 6 years ago

cesco69 commented 6 years ago

Codebase

Mounted codebase

Host OS

Ubuntu 16.04.4 LTS

Docker info output

Containers: 7
 Running: 6
 Paused: 0
 Stopped: 1
Images: 7
Server Version: 17.12.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9b55aab90508bd389d7654c4baf173a981477d55
runc version: 9f9c96235cc97674e935002fc3d78361b696a69e
init version: 949e6fa
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.4.0-116-generic
Operating System: Ubuntu 16.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 974.3MiB
Name: ubuntu
ID: 3KM2:ZLVO:CBRT:4TJS:MGPI:TQGP:IYO3:JCUZ:MVXV:RLCQ:YOC7:FVM6
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
HTTP Proxy: http://usr:pwd@ip:port/
HTTPS Proxy: http://usr:pwd@ip:port/
No Proxy: localhost,127.0.0.1,localaddress,.localdomain.com
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support

Docker compose file

version: "2"

services:
  mariadb:
    image: wodby/mariadb:$MARIADB_TAG
    container_name: "${PROJECT_NAME}_mariadb"
    stop_grace_period: 30s
    ports:
      - '53306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
      MYSQL_DATABASE: $DB_NAME
      MYSQL_USER: $DB_USER
      MYSQL_PASSWORD: $DB_PASSWORD
    volumes:
      - /home/user/mariadb/mariadb-init:/docker-entrypoint-initdb.d # Place init .sql file(s) here.
      - /home/user/mariadb/data:/var/lib/mysql # I want to manage volumes manually.

  php:
    image: wodby/wordpress-php:$PHP_TAG
    container_name: "${PROJECT_NAME}_php"
    environment:
      PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025
      DB_HOST: $DB_HOST
      DB_USER: $DB_USER
      DB_PASSWORD: $DB_PASSWORD
      DB_NAME: $DB_NAME
    volumes:
      - /home/user/mywebsite:/var/www/html

  mailhog:
    image: mailhog/mailhog
    container_name: "${PROJECT_NAME}_mailhog"
    labels:
      - 'traefik.backend=mailhog'
      - 'traefik.port=8025'
      - 'traefik.frontend.rule=Host:mailhog.${PROJECT_BASE_URL}'

  apache:
    image: wodby/php-apache:$APACHE_TAG
    container_name: "${PROJECT_NAME}_apache"
    depends_on:
      - php
    environment:
      APACHE_LOG_LEVEL: debug
      APACHE_BACKEND_HOST: php
    volumes:
      - /home/user/mywebsite:/var/www/html
    labels:
      - 'traefik.backend=apache'
      - 'traefik.port=80'
      - 'traefik.frontend.rule=Host:${PROJECT_BASE_URL}'

  portainer:
    image: portainer/portainer
    container_name: "${PROJECT_NAME}_portainer"
    command: --no-auth -H unix:///var/run/docker.sock
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    labels:
      - 'traefik.backend=portainer'
      - 'traefik.port=9000'
      - 'traefik.frontend.rule=Host:portainer.${PROJECT_BASE_URL}'

  traefik:
    image: traefik
    container_name: "${PROJECT_NAME}_traefik"
    command: -c /dev/null --web --docker --logLevel=INFO
    ports:
      - '80:80'
      - '8080:8080' # Dashboard
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

I'm running 5.0.1 docker4wordpress with codebase installation. I've loaded all my old wordpress files and database to volumes and mariadb. Wordpress starts, but I don't have permission to update plugins etc. from wordpress. All my files in volume "/home/user/mywebsite" are owned by user MyUser[1000] and group MyGroup[1000]. Wordpress container wants to write with group alpine-www-data [82] and user [82]. Launching groups alpine-www-data message is show groups: ‘alpine-www-data’: no such user

How can I fix these permission issues?

csandanov commented 6 years ago

If you want to update/upgrade plugins via UI you should allow write access to www-data by running the following commands from php container (make shell):

chown -R :www-data wp-content
chmod -R 775 wp-content

Although I would recommend to use composer to install/update plugins, themes and even WP core instead of storing all of this in your git, check out wodby/wordpress-composer for boilerplate