Sil*_*ash 25 linux debian docker
我遇到了这篇文章中描述的相同问题,但在 docker 容器内。我真的不知道我的 pgadmin 文件位于哪里来编辑它的默认路径。我该如何解决这个问题?请尽可能详细,因为我不知道如何 docker。
以下是命令逐字摘要docker-compose up:
php-worker_1 | 2020-11-11 05:50:13,700 INFO spawned: 'laravel-worker_03' with pid 67
pgadmin_1 | [2020-11-11 05:50:13 +0000] [223] [INFO] Worker exiting (pid: 223)
pgadmin_1 | WARNING: Failed to set ACL on the directory containing the configuration database:
pgadmin_1 | [Errno 1] Operation not permitted: '/var/lib/pgadmin'
pgadmin_1 | HINT : You may need to manually set the permissions on
pgadmin_1 | /var/lib/pgadmin to allow pgadmin to write to it.
pgadmin_1 | ERROR : Failed to create the directory /var/lib/pgadmin/sessions:
pgadmin_1 | [Errno 13] Permission denied: '/var/lib/pgadmin/sessions'
pgadmin_1 | HINT : Create the directory /var/lib/pgadmin/sessions, ensure it is writeable by
pgadmin_1 | 'pgadmin', and try again, or, create a config_local.py file
pgadmin_1 | and override the SESSION_DB_PATH setting per
pgadmin_1 | https://www.pgadmin.org/docs/pgadmin4/4.27/config_py.html
pgadmin_1 | /usr/local/lib/python3.8/os.py:1023: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used
pgadmin_1 | return io.open(fd, *args, **kwargs)
pgadmin_1 | [2020-11-11 05:50:13 +0000] [224] [INFO] Booting worker with pid: 224
Run Code Online (Sandbox Code Playgroud)
我的 docker-compose.yml:
### pgAdmin ##############################################
pgadmin:
image: dpage/pgadmin4:latest
environment:
- "PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}"
- "PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}"
ports:
- "${PGADMIN_PORT}:80"
volumes:
- ${DATA_PATH_HOST}/pgadmin:/var/lib/pgadmin
depends_on:
- postgres
networks:
- frontend
- backend
Run Code Online (Sandbox Code Playgroud)
rzl*_*vmp 39
好的。看起来当您尝试运行pgadmin服务时出现问题。
这部分
### pgAdmin ##############################################
pgadmin:
image: dpage/pgadmin4:latest
environment:
- "PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}"
- "PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}"
ports:
- "${PGADMIN_PORT}:80"
volumes:
- ${DATA_PATH_HOST}/pgadmin:/var/lib/pgadmin
depends_on:
- postgres
networks:
- frontend
- backend
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,您尝试将本地目录挂载${DATA_PATH_HOST}/pgadmin到容器中/var/lib/pgadmin
volumes:
- ${DATA_PATH_HOST}/pgadmin:/var/lib/pgadmin
Run Code Online (Sandbox Code Playgroud)
正如您在本文中所读到的,您的本地${DATA_PATH_HOST}/pgadmin目录的 UID 和 GID 必须是5050. 这是5050?
您可以通过运行来检查它
### pgAdmin ##############################################
pgadmin:
image: dpage/pgadmin4:latest
environment:
- "PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}"
- "PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD}"
ports:
- "${PGADMIN_PORT}:80"
volumes:
- ${DATA_PATH_HOST}/pgadmin:/var/lib/pgadmin
depends_on:
- postgres
networks:
- frontend
- backend
Run Code Online (Sandbox Code Playgroud)
输出会像
drwxrwxr-x 1 5050 5050 12693 Nov 11 14:56 pgadmin
Run Code Online (Sandbox Code Playgroud)
或者
drwxrwxr-x 1 SOME_USER SOME_GROUP 12693 Nov 11 14:56 pgadmin
Run Code Online (Sandbox Code Playgroud)
如果SOME_USER和SOME_GROUP的 ID 是5050,那就可以了。5050as也可以。如果没有,请尝试按照上面文章中的描述进行操作。
sudo chown -R 5050:5050 ${DATA_PATH_HOST}/pgadmin
Run Code Online (Sandbox Code Playgroud)
您还需要检查环境变量是否存在:
# run it as same user as you running docker-compose
echo ${DATA_PATH_HOST}
Run Code Online (Sandbox Code Playgroud)
如果输出为空,您需要设置${DATA_PATH_HOST}或允许 docker 从文件中读取变量。有很多方法可以做到这一点。
小智 7
在 kubernetes 环境中运行时,我必须添加这些值。
spec:
containers:
- name: pgadmin
image: dpage/pgadmin4:5.4
securityContext:
runAsUser: 0
runAsGroup: 0
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Windows,请将此行添加到您的docker-compose.yml. 它使容器可以访问您的本地文件夹
version: "3.9"
services:
postgres:
user: root <- this one
container_name: postgres_container
image: postgres:14.2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26515 次 |
| 最近记录: |