unclev / prosody-docker-extended

Docker image building system for the Prosody XMPP server with Community Modules and telnet console
MIT License
25 stars 9 forks source link

Prosody Docker image does not start. The resulting container is constantly restarting #6

Open unclev opened 6 years ago

unclev commented 6 years ago

Jean-Philippe Baril wrote:

I tried to use your Prosody Docker image but it does not start. The resulting container is constantly restarting.

What docker shows as logs :

xmpp_server_1  | ++ id -u
xmpp_server_1  | ++ id -u prosody
xmpp_server_1  | + [[ 1000 -eq 1000 ]]
xmpp_server_1  | ++ ls -A /etc/prosody
xmpp_server_1  | ++ head -1
xmpp_server_1  | + [[ -z '' ]]
xmpp_server_1  | + cp -Rv /etc/prosody.default/certs /etc/prosody.default/migrator.cfg.lua /etc/prosody.default/prosody.cfg.lua /etc/prosody/
xmpp_server_1  | cp: cannot create directory '/etc/prosody/certs': Permission denied
xmpp_server_1  | '/etc/prosody.default/migrator.cfg.lua' -> '/etc/prosody/migrator.cfg.lua'
xmpp_server_1  | '/etc/prosody.default/prosody.cfg.lua' -> '/etc/prosody/prosody.cfg.lua'
xmpp_server_1  | cp: cannot create regular file '/etc/prosody/migrator.cfg.lua': Permission denied
xmpp_server_1  | cp: cannot create regular file '/etc/prosody/prosody.cfg.lua': Permission denied

Here is what I used as docker-compose.yml :

xmpp_server:
  image: unclev/prosody-docker-extended:0.10
  restart: unless-stopped
  hostname: *censored*
  ports:
    - 5222:5222
    - 5269:5269
    - 5347:5347
    - 5280:5280
  volumes:
    - './config:/etc/prosody'
    - './data:/var/lib/prosody'
    - './log:/var/log/prosody'
    - './modules/community:/usr/lib/prosody/modules-community'
    - './modules/custom:/usr/lib/prosody/modules-custom'

Thanks for your help and for the Docker image.

unclev commented 6 years ago

Prosody user within the image does not have write (and likely none) permission to operate in the host directories. Compare with my fresh example, where it does not have root permissions.

# root @ dns-studio in /srv/prosody [22:21:17] 
$ cat docker-compose.yml 
xmpp_server:
  image: unclev/prosody-docker-extended:0.10
  #restart: unless-stopped
  #hostname: *censored*
  ports:
    - 5222:5222
    - 5269:5269
    - 5347:5347
    - 5280:5280
  volumes:
    - './config:/etc/prosody'
    - './data:/var/lib/prosody'
    - './log:/var/log/prosody'
    - './modules/community:/usr/lib/prosody/modules-community'
    - './modules/custom:/usr/lib/prosody/modules-custom'

# root @ dns-studio in /srv/prosody [22:21:23] 
$ mkdir -p config data log modules/community modules/custom

# root @ dns-studio in /srv/prosody [22:22:34] 
$ la
total 20K
drwxr-xr-x 2 root root 4,0K мар  5 22:22 config
drwxr-xr-x 2 root root 4,0K мар  5 22:22 data
-rw-r--r-- 1 root root  409 мар  5 22:21 docker-compose.yml
drwxr-xr-x 2 root root 4,0K мар  5 22:22 log
drwxr-xr-x 4 root root 4,0K мар  5 22:22 modules

# root @ dns-studio in /srv/prosody [22:22:36] 
$ docker-compose up
Pulling xmpp_server (unclev/prosody-docker-extended:0.10)...
0.10: Pulling from unclev/prosody-docker-extended
1be7f2b886e8: Pull complete
6fbc4a21b806: Pull complete
c71a6f8e1378: Pull complete
4be3072e5a37: Pull complete
06c6d2f59700: Pull complete
d29d2ca5334d: Pull complete
4fba461e6da1: Pull complete
e053e1587f8d: Pull complete
ecd07ac199f9: Pull complete
7b13708a93d2: Pull complete
d31227291d72: Pull complete
960ef5c98364: Pull complete
Digest: sha256:e599694c79d38c032c36780766bc6ec305f5a0c00ac96834f2faca29e790d68b
Status: Downloaded newer image for unclev/prosody-docker-extended:0.10
Creating prosody_xmpp_server_1
Attaching to prosody_xmpp_server_1
xmpp_server_1  | ++ id -u
xmpp_server_1  | ++ id -u prosody
xmpp_server_1  | + [[ 1000 -eq 1000 ]]
xmpp_server_1  | ++ ls -A /etc/prosody
xmpp_server_1  | ++ head -1
xmpp_server_1  | + [[ -z '' ]]
xmpp_server_1  | + cp -Rv /etc/prosody.default/certs /etc/prosody.default/migrator.cfg.lua /etc/prosody.default/prosody.cfg.lua /etc/prosody/
xmpp_server_1  | '/etc/prosody.default/migrator.cfg.lua' -> '/etc/prosody/migrator.cfg.lua'
xmpp_server_1  | cp: cannot create directory '/etc/prosody/certs': Permission denied
xmpp_server_1  | cp: cannot create regular file '/etc/prosody/migrator.cfg.lua': Permission denied
xmpp_server_1  | '/etc/prosody.default/prosody.cfg.lua' -> '/etc/prosody/prosody.cfg.lua'
xmpp_server_1  | cp: cannot create regular file '/etc/prosody/prosody.cfg.lua': Permission denied
prosody_xmpp_server_1 exited with code 1

Prosody user id and group are hardcoded in the Dockerfile and evaluate to 1000.

There are 2 possible solutions:

  1. Change your prosody directories and files ownership. Being in the directory with docker-compose.yml execute:
sudo chown -R 1000:1000 config data log modules

then start as usual.

Important note: ./config directory must be empty so that the starting script copies its default configuration into it.

  1. Clone (or fork this repository), or download 0.10.zip of the 0.10 branch from this repository, modify Dockerfile so that it contains your preferred user and group (it must not be 0), and build your custom prosody-docker-extended image.
docker build --tag jpbaril/prosody-docker-extended:0.10 .

when use jpbaril/prosody-docker-extended:0.10 in your docker-compose.yml file.

I'm sorry this version of the image does not support changing PUID and PGID via --build-arg.

unclev commented 4 years ago

There is the duplicate #16 .

The related issue #7 .

I'm re-opening this issue.