标签: docker-compose

docker-compose 上的 rails 应用程序:db:migration 显示“权限被拒绝”

我正在 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:migratedocker-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

ruby-on-rails database-migration docker-compose

1
推荐指数
1
解决办法
1414
查看次数

如何使用 docker-compose 从多个私有注册表中提取?

我试图从两个不同的项目注册表(gitlab 容器注册表)中提取两个图像。所有这些都在一个docker-compose.yml文件中。

我如何配置我的gitlab-ci.yml或配置变量(无论什么都有效)以便正确提取我的图像而不会出现任何访问​​问题?

我找到了一个使用部署令牌的解决方案docker login,可以对我的项目注册表进行只读访问。问题是,如果我只有一个图像可以拉取:如何使用 gitlab ci 构建、推送和拉取多个 docker 容器?

docker gitlab-ci docker-compose

1
推荐指数
1
解决办法
3116
查看次数

重新启动 Docker Compose 并更新数据库

我一直在使用仅包含 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 …

mysql docker docker-compose

1
推荐指数
1
解决办法
4799
查看次数

为什么 docker-compose 在挂载命名卷时会创建一个空的主机文件夹?

我的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.

关于这个我有两个问题:

  1. 在我的主机中创建了一个名为node_modules. 如果我将另一个卷(命名或匿名)添加到我.yml文件中的列表中,它将显示在我的主机目录中包含我的.yml文件的同一文件夹中。从这个答案来看,这似乎与这两个映射同时进行的事实有关。但是,为什么我的主机上的文件夹是空的?它不应该 a) 包含来自命名卷的文件或 b) 根本不显示在主机上吗?

  2. Docker 如何知道/var/www/app/node_modules在初始化卷时检查图像的底层,而不是仅仅说“哦,node_modules不存在”(因为我假设主机绑定安装在命名卷初始化之前发生,因此/var/www/app不应该再有一个名为 的文件夹node_modules。当我node_modules在我的主机上创建一个示例文件夹并同时保留一个新卷时,my_modules:/var/www/app/node_modules它似乎甚至可以工作- 它似乎仍然使用node_modules来自图像而不是来自主机(这不是我所期望的,虽然不是不需要)。

docker dockerfile docker-compose

1
推荐指数
1
解决办法
2107
查看次数

docker-compose 无法为 mongodb 创建用户和密码

我正在关注这个 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)

mongodb docker docker-compose

1
推荐指数
1
解决办法
1223
查看次数

Docker 和 MySQL:使用 docker-compose 文件不创建任何机密

我的 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 主机上运行 …

docker docker-compose docker-secrets

1
推荐指数
1
解决办法
1592
查看次数

docker + golang lib/pq“拨号 tcp 127.0.0.1:5432:连接:连接被拒绝”

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)

postgresql go docker kubernetes docker-compose

1
推荐指数
1
解决办法
6050
查看次数

这里不允许 yml docker-compose 错误映射值

我尝试了解容器,但我的 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)

yaml docker docker-compose

1
推荐指数
1
解决办法
9665
查看次数

如何将放置在 .env 文件中的变量传递给 docker swarm 中的容器?

我正在尝试对docker -composeswarm使用相同的 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

1
推荐指数
1
解决办法
2028
查看次数

docker-compose 在新的 Raspbian 安装上崩溃

我刚刚在 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. 知道可能缺少什么吗?

raspbian docker docker-compose raspberry-pi3

1
推荐指数
1
解决办法
1316
查看次数