我在Windows中安装了我的Docker。我正在尝试安装this应用程序。它给了我以下的docer-compose.yml文件:
version: '2'
services:
web:
build:
context: .
dockerfile: Dockerfile-nginx
ports:
- "8085:80"
networks:
- attendizenet
volumes:
- .:/usr/share/nginx/html/attendize
depends_on:
- php
php:
build:
context: .
dockerfile: Dockerfile-php
depends_on:
- db
- maildev
- redis
volumes:
- .:/usr/share/nginx/html/attendize
networks:
- attendizenet
php-worker:
build:
context: .
dockerfile: Dockerfile-php
depends_on:
- db
- maildev
- redis
volumes:
- .:/usr/share/nginx/html/attendize
command: php artisan queue:work --daemon
networks:
- attendizenet
db:
image: postgres
environment:
- POSTGRES_USER=attendize
- POSTGRES_PASSWORD=attendize
- POSTGRES_DB=attendize
ports:
- "5433:5432"
volumes:
- ./docker/pgdata:/var/lib/postgresql/data
networks:
- attendizenet
maildev:
image: djfarrelly/maildev
ports:
- "1080:80"
networks:
- attendizenet
redis:
image: redis
networks:
- attendizenet
networks:
attendizenet:
driver: bridge
所有的安装都进行得很顺利,但是PostgreSQL容器在启动一段时间后停止,并出现以下错误。
2018-03-07 08:24:47.927 UTC [1] FATAL: data directory "/var/lib/postgresql/data" has wrong ownership
2018-03-07 08:24:47.927 UTC [1] HINT: The server must be started by the user that owns the data directory
Docker Hub中的简单PostgreSQL容器可以顺利工作,但当我们尝试将卷附加到容器时会发生错误。
我是新来的码头,所以请忽略错误的术语用法。
6条答案
按热度按时间0pizxfdo1#
这是Windows [1][2][3][4]上Postgres Docker映像的一个已记录问题。目前,似乎没有一种方法可以将Windows目录正确装载为卷。您可以改用永久Docker卷,例如:
其他不起作用的事情:
详细信息:
GitHub网站
Docker论坛
6tdlim6h2#
请参考reinierkors从here的答案。答案如下所示,为方便读者,从这里的链接复制,并为我工作
我通过将本地卷的一个目录Map到Postgres需要的目录下来解决这个问题:
mkshixfv3#
我有同样的问题后,降级我的Docker从
WSL 2
到WSL 1
和什么Thomas Taylor的有关,我解决了这个问题,使用named volume。jdg4fx2g4#
将本地卷(例如C:\docker\pgdata)Map到PostgreSQL所需的上一级(一个目录)。您也可以在启动docker时从命令行执行此操作:
3pvhb19x5#
即使我有这个问题,我也必须定期复制数据目录。
jqjz2hbq6#
容器内postgres中数据文件夹的所有者是Postgres用户。您的当前用户可能没有已装载文件夹的访问权限。您需要通过以下给定命令根据要求授予所有权限:
如果此命令不能帮助解决此问题,请参考以下链接以执行从容器内部到容器外部的用户Map。
https://docs.docker.com/engine/security/userns-remap/#prerequisites