我正在 docker-compose 图像上运行一个 rails 应用程序。创建用户设计后,当我运行docker-compose run web rails db:migrate它时显示以下错误:PG::ConnectionBad: FATAL: could not open relation mapping file "global/pg_filenode.map": Permission denied
我已经尝试了所有与 rails 和 psql 相关的解决方案,所以我猜我的问题出在 docker-compose 程序上,我也尝试过,sudo但结果是一样的
代码:我运行的命令是docker-compose run web rails db:migrate在docker-compose run web rails g devise usuario
这是输出:
rails aborted!
PG::ConnectionBad: FATAL: could not open relation mapping file "global/pg_filenode.map": Permission denied
/usr/local/bundle/gems/pg-1.1.4/lib/pg.rb:56:in `initialize'
/usr/local/bundle/gems/pg-1.1.4/lib/pg.rb:56:in `new'
/usr/local/bundle/gems/pg-1.1.4/lib/pg.rb:56:in `connect'
Run Code Online (Sandbox Code Playgroud)
此链接中的其余日志:https : //hastebin.com/axiboxohem.bash
我试图从两个不同的项目注册表(gitlab 容器注册表)中提取两个图像。所有这些都在一个docker-compose.yml文件中。
我如何配置我的gitlab-ci.yml或配置变量(无论什么都有效)以便正确提取我的图像而不会出现任何访问问题?
我找到了一个使用部署令牌的解决方案docker login,可以对我的项目注册表进行只读访问。问题是,如果我只有一个图像可以拉取:如何使用 gitlab ci 构建、推送和拉取多个 docker 容器?
我一直在使用仅包含 ID 和 NAME 列的 Docker Compose 处理一个简单的 MySQL 表。我尝试更新最初创建表的 myDb.sql 文件,如下所示:
CREATE TABLE `Person` (
`id` int(11) NOT NULL,
`firstName` varchar(50) NOT NULL, // updated this column
`lastName` varchar(50) NOT NULL // added this column
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
我将 NAME 列更新为 firstName,并添加了一个 lastName 列。
然后我通过运行 DOCKER-COMPOSE STOP 停止了 Docker 容器。
然后我通过运行 DOCKER-COMPOSE UP 重新启动了 Docker 容器。我什至尝试过 DOCKER-COMPOSE RESTART。
我能够在控制台中打印的错误消息是这样的:
SELECT '', id, `firstName` From Person<br>Unknown column 'firstName' in 'field list'
Run Code Online (Sandbox Code Playgroud)
这让我相信我没有正确重启 Docker Compose。
如何重新启动 Docker Compose 以便它运行 CREATE …
我的docker-compose.yml文件中有以下内容:
volumes:
- .:/var/www/app
- my_modules:/var/www/app/node_modules
Run Code Online (Sandbox Code Playgroud)
我这样做是因为node_modules我的主机上没有,并且所有内容都安装在映像中并位于/var/www/app/node_modules.
关于这个我有两个问题:
在我的主机中创建了一个名为node_modules. 如果我将另一个卷(命名或匿名)添加到我.yml文件中的列表中,它将显示在我的主机目录中包含我的.yml文件的同一文件夹中。从这个答案来看,这似乎与这两个映射同时进行的事实有关。但是,为什么我的主机上的文件夹是空的?它不应该 a) 包含来自命名卷的文件或 b) 根本不显示在主机上吗?
Docker 如何知道/var/www/app/node_modules在初始化卷时检查图像的底层,而不是仅仅说“哦,node_modules不存在”(因为我假设主机绑定安装在命名卷初始化之前发生,因此/var/www/app不应该再有一个名为 的文件夹node_modules。当我node_modules在我的主机上创建一个示例文件夹并同时保留一个新卷时,my_modules:/var/www/app/node_modules它似乎甚至可以工作- 它似乎仍然使用node_modules来自图像而不是来自主机(这不是我所期望的,虽然不是不需要)。
我正在关注这个 mongo 的官方 docker页面来配置 mongodb 以启用授权以及创建用户、密码和数据库。但是,当我启动 docker-compose 我的 nodejs 组件时,它无法连接到 mongodb,因为在 mongodb 端没有创建用户。
docker-compose.yml
version: "3"
services:
nodejs:
container_name: nodejs # How the container will appear when listing containers from the CLI
build:
context: .
dockerfile: Dockerfile-nodejs
user: node # The user to run as in the container
working_dir: "/app" # Where to container will assume it should run commands and where you will start out if you go inside the container
networks:
- app # Networking can …Run Code Online (Sandbox Code Playgroud) 我的 Docker 容器在运行时不断重启docker-compose up -d。使用 来检查日志时docker logs --tail 50 --follow --timestamps db,出现以下错误:
/usr/local/bin/docker-entrypoint.sh: line 37: "/run/secrets/db_mysql_root_pw": No such file or directory
这可能意味着没有秘密。的输出docker secret ls也不提供任何秘密。
我的 docker-compose.yml 文件看起来像这样(不包括端口信息等):
version: '3.4'
services:
db:
image: mysql:8.0
container_name: db
restart: always
environment:
- MYSQL_USER_FILE="/run/secrets/db_mysql_user"
- MYSQL_PASSWORD_FILE="/run/secrets/db_mysql_user_pw"
- MYSQL_ROOT_PASSWORD_FILE="/run/secrets/db_mysql_root_pw"
secrets:
- db_mysql_user
- db_mysql_user_pw
- db_mysql_root_pw
volumes:
- "./mysql-data:/docker-entrypoint-initdb.d"
secrets:
db_mysql_user:
file: ./db_mysql_user.txt
db_mysql_user_pw:
file: ./db_mysql_user_pw.txt
db_mysql_root_pw:
file: ./db_mysql_root_pw.txt
Run Code Online (Sandbox Code Playgroud)
在同一个目录中,我有 3 个文本文件,它们只包含环境变量的值。例如db_mysql_user_pw.txt包含password。
我在 Windows 主机上运行 …
sql.Open() 不会出错:
if db, err = sql.Open("postgres", url); err != nil {
return nil, fmt.Errorf("Postgres connect error : (%v)", err)
}
Run Code Online (Sandbox Code Playgroud)
但db.Ping()会出错:
if err = db.Ping(); err != nil {
return nil, fmt.Errorf("Postgres ping error : (%v)", err)
}
Run Code Online (Sandbox Code Playgroud)
这仅仅是因为 lib/pq 连接字符串不会从具有单独连接参数的 docker 容器内连接。
例如:
url := fmt.Sprintf("user=%v password=%v host=%v port=%v dbname=%v",
rs.conf.Redshift.User,
rs.conf.Redshift.Password,
rs.conf.Redshift.Host,
rs.conf.Redshift.Port,
rs.conf.Redshift.DB)
Run Code Online (Sandbox Code Playgroud) 我尝试了解容器,但我的 docker-compose.yml 文件有问题,在运行 docker compose up 后,我总是遇到相同的错误:
“错误:yaml.scanner.ScannerError:此处不允许映射值”
即使我将挂载路径更改为 docker 卷,我也遇到了同样的错误,这是我的yml文件
version: "3"
services:
database:
image: mariadb
ports:
- "3260:3260"
volumes:
- /home/randy/Desktop/Latihan/wordpress-mariadb/mariadb:var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
wordpress:
image: wordpress
ports:
- "2000:80"
volumes:
- /home/randy/Desktop/Latihan/wordpress-mariadb/wordpress:/var/www/html
environment:
WORDPRESS_DB_PASSWORD: root
depends_on:
- database
links:
- database
Run Code Online (Sandbox Code Playgroud) 我正在尝试对docker -compose和swarm使用相同的 docker-compose.yml和.env文件。变量来自通过在启动时运行 run.sh 脚本,.env文件中应该通过 sed 解析到配置文件中。使用该docker-compose up命令时,此设置工作正常,但当我使用该docker stack deploy命令时,它们没有通过。
如何将变量传递到容器中,以便run.sh脚本在启动时解析它们?
environment-variables docker docker-compose docker-swarm docker-stack
我刚刚在 Raspberry Pi3 上全新安装了 Docker 和 Compose。Docker 运行良好。但是当我尝试用 Compose 做任何事情时,我收到了这个错误
pi@raspberrypi:~ $ docker-compose
Traceback (most recent call last):
File "/usr/local/bin/docker-compose", line 6, in <module>
from compose.cli.main import main
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 52, in <module>
from .formatter import ConsoleWarningFormatter
File "/usr/local/lib/python2.7/dist-packages/compose/cli/formatter.py", line 15, in <module>
from backports.shutil_get_terminal_size import get_terminal_size
ImportError: No module named shutil_get_terminal_size
Run Code Online (Sandbox Code Playgroud)
Compose 是通过pip. 知道可能缺少什么吗?
docker-compose ×10
docker ×9
docker-stack ×1
docker-swarm ×1
dockerfile ×1
gitlab-ci ×1
go ×1
kubernetes ×1
mongodb ×1
mysql ×1
postgresql ×1
raspbian ×1
yaml ×1