相关疑难解决方法(0)

Docker compose将找不到$ PWD环境变量

这是我的docker-compose:

version: '2'
services:
  couchpotato:
    build:
        context: ./couchpotato
        dockerfile: Dockerfile
    ports:
     - 5050:5050
    volumes:
     - "${PWD}/couchpotato/data:/home/CouchPotato/data/"
     - "${PWD}/couchpotato/config:/home/CouchPotato/config/"
Run Code Online (Sandbox Code Playgroud)

当我在shell中运行它时,在docker-compose.yml的目录中,我得到:

WARNING: The PWD variable is not set. Defaulting to a blank string.
Run Code Online (Sandbox Code Playgroud)

并且撰写以PWD为空开始.

我没有在文件中看到任何错误,如下所示:https://docs.docker.com/compose/environment-variables/

shell environment-variables docker

18
推荐指数
3
解决办法
3万
查看次数

使用 docker-compose 从卷挂载单个文件

对于本地开发人员,我需要在 Docker 容器中安装不同的配置文件。使用命令行很容易做到这一点-v $(pwd)/bla.yaml:/location/bla.yaml。是否可以从文件中的volume(用docker volume create bla)创建docker-compose

docker docker-compose

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

docker-compose 创建目录而不是文件

我正在尝试使用一些 docker 容器和 docker-compose 设置我的家庭服务器(Ubuntu 18.04 LTS)。在尝试设置“transmission-rss”时,出现以下错误:

/usr/local/lib/ruby/2.6.0/psych.rb:577:in `initialize': Is a directory @ io_fillbuf - fd:5 /etc/transmission-rss.conf (Errno::EISDIR)
Run Code Online (Sandbox Code Playgroud)

当我检查transmission-rss.conf文件是否已创建时,在其位置创建了一个同名的目录。

我必须docker-compose up使用运行命令sudo,所以我不知道这是否与权限有关。

这是我当前的 docker-compose.yml 文件:

version: '3'
services:
  portainer:
    container_name: portainer
    image: portainer/portainer
    volumes:
      - '/home/miguel/docker/portainer/data/:/data'
      - '/home/miguel/docker/portainer/socket/:/var/run/docker.sock'
    ports:
      - "9000:9000"
    restart: always
  transmission-rss:
    container_name: transmission-rss
    image: nning2/transmission-rss:latest
    volumes:
      - '/home/miguel/docker/transmission-rss/transmission-rss.conf/:/etc/transmission-rss.conf/'
    restart: unless-stopped
Run Code Online (Sandbox Code Playgroud)

容器portainer启动正常。

非常感谢你,米格尔

docker docker-compose ubuntu-18.04

12
推荐指数
2
解决办法
1万
查看次数

具有自定义 php.ini 文件设置的 Docker Wordpress 容器

我在 Docker 容器中运行 Wordpress(以及 PHPMyAdmin 和 MySQL),我需要进行更改以增加 PHPMyAdmin 的最大可上传文件大小

我研究了许多解决方案,并找到了创建自定义uploads.ini文件然后将此文件包含在docker-compose文件中的建议。

所以我有这个:

上传.ini

file_uploads = On
memory_limit = 64M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: '3'

services:
  # Database
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - wpsite
  # phpmyadmin
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - '8080:80'
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: password 
    networks:
      - wpsite
  # Wordpress …
Run Code Online (Sandbox Code Playgroud)

wordpress phpmyadmin docker

7
推荐指数
2
解决办法
2万
查看次数

如何在Docker容器中配置rabbitmq.config?

我正在使用官方的RabbitMQ Docker镜像(https://hub.docker.com/_/rabbitmq/)

rabbitmq.config在运行后尝试编辑容器内的文件

docker exec -it <container-id> /bin/bash

但是,这似乎对容器中运行的rabbitmq服务器没有影响.由于Docker启动了一个全新的实例,因此重启容器显然没有帮助.

所以我假设配置rabbitmq.configDocker容器的唯一方法是在容器开始运行之前设置它,我可以部分地使用图像支持的环境变量.

遗憾的是,环境变量并不支持所有配置选项.举例来说,我想设置{auth_mechanisms, ['PLAIN', 'AMQPLAIN', 'EXTERNAL']}rabbitmq.config.

然后我找到了RABBITMQ_CONFIG_FILE环境变量,这应该允许我指向我想用作conifg文件的文件.但是,我试过以下没有运气:

docker service create --name rabbitmq --network rabbitnet \
-e RABBITMQ_ERLANG_COOKIE='mycookie' --hostname = "{{Service.Name}}{{.Task.Slot}}" \
--mount type=bind,source=/root/mounted,destination=/root \
-e RABBITMQ_CONFIG_FILE=/root/rabbitmq.config rabbitmq
Run Code Online (Sandbox Code Playgroud)

默认rabbitmq.config文件包含:

[ { rabbit, [ { loopback_users, [ ] } ] } ]
Run Code Online (Sandbox Code Playgroud)

一旦它开始,它就在容器中

配置rabbitmq.configDocker容器内部的最佳方法是什么?

rabbitmq docker docker-swarm-mode

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

如何从Docker容器克隆Git存储库

我们有一个工具,需要克隆几个Git存储库以汇总文档数据。我们希望将该工具放在Docker容器中,以便在本地和Jenkins轻松运行它,并实现可重复性。

Git存储库托管在需要使用SSH密钥进行身份验证的专用服务器上。因此,Docker容器必须以某种方式获得对运行该容器的用户的SSH密钥的访问权限。

我们有一个约束列表:

  1. 我们希望将泊坞窗图像中嵌入的SSH密钥
  2. 我们希望用户构建Docker映像。我们认为Dockerfile不会启用可重现性,而已经生成的Docker映像可以
  3. 我们希望容器以root用户身份运行
  4. 我们使用运行容器的主机用户的SSH密钥
  5. 参数可被提供给该命令启动容器(-v-u,...)

问题:如果可能的话,我们如何实现?

有关:

git ssh-keys docker

6
推荐指数
2
解决办法
2348
查看次数

docker 容器上的持久性 /etc/passwd

我创建了一个 docker 镜像,允许用户使用 SSH 连接它。

出于安全原因,我希望用户可以更改他们的密码。我只使用 docker 命名的卷,所以我无法绑定 /etc/passwd 并且我不想挂载所有 /etc

有任何想法吗?提前致谢。

linux mount passwd volumes docker

5
推荐指数
2
解决办法
6282
查看次数

How to actually bind mount a file in Docker for Windows

I'm attempting to update the sebp/elk Logstash configuration following the documentation here. I'm running into a situation in which the host file that I am attempting to mount is being mounted as a directory in the container.

我发现了这个相关的问题How to mount a single file in a volume但在 Windows 上使用 PWD 运行的概念对我不起作用,因为我收到以下错误: C:\Program Files\Docker\Docker\Resources\bin\docker.exe: invalid reference format

我在 Windows 10 上运行 Docker(内部版本 16299.192)

? docker version
Client:
 Version:      17.09.1-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   19e2cf6
 Built:        Thu …
Run Code Online (Sandbox Code Playgroud)

docker docker-volume

5
推荐指数
2
解决办法
8133
查看次数

向 Docker 容器提供配置文件的推荐方式

我正在将我们的 Web 应用程序转移到 docker-compose 部署(Django、DRF、AngularJS)。

Docker 现在看起来很稳定,一切进展顺利。

我想要:

  • 与您确认我正在遵循有关应用程序配置文件的最佳实践
  • 知道“卷文件”是否实际上是绑定挂载,不推荐这样做

我已经设法使用环境变量和从 Djangosettings.py文件读取的 docker-compose 机密,并且它可以工作。缺点是环境变量仅限于简单的字符串,并且在发送 Python 列表、字典等时可能会带来一些转义挑战。我们还必须定义和维护大量环境变量,因为我们的 Web 应用程序安装在很多地方并且具有高度可配置性。

在前端(AngularJS),我们有两个constants.js文件和 nginx conf。我在 Dockerfile 中使用过CMD ["/start.sh"]并有一些sed命令。但这看起来真的很黑客,这也意味着我们必须定义和维护相当多的环境变量。

  1. 对于这些配置文件使用 Docker 卷是个好主意吗?

  2. “卷文件”之类的东西是否确实存在此处提到)或者它实际上是绑定安装?绑定挂载不太推荐,因为它们依赖于主机上的文件系统和文件路径。

Volumes 文档简要提到了文件:“文件或目录在容器中安装的路径”,但没有详细介绍。

我们的网络应用程序现在有简单的配置文件:

  • settings.py
  • site\contants.js
  • admin\constants.js

和:

  1. 我想避免将这些文件移动到可以安装的专用目录。

  2. 您能给我展示一个带有单个文件卷(不是绑定安装)的示例 docker-compose.yml 吗

谢谢

django volumes docker docker-compose

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

在GoLang Docker SDK中定义卷的安装点

我目前正在尝试使用官方GoLang Docker SDK创建一个Docker容器,并尝试将一个卷从我的本地主机挂载到Docker容器。

vol := map[string]struct{}{"/pathInDocker":{}}

// This was prepared using example at:
//https://docs.docker.com/develop/sdk/examples/#run-a-container
res, err := cli.ContainerCreate(ctx, &container.Config{
    Image: testImageName,
    Volumes: vol,
    Cmd: []string{"ls", "/"},
}, nil, nil, "")
Run Code Online (Sandbox Code Playgroud)

这可以在创建容器并将“ / pathInDocker”添加到docker容器时起作用,但是,我无法弄清楚如何为本地主机添加安装点。

我已经尝试了以下vol变量的可能值

vol := map[string]struct{}{"localPath:/pathInDocker":{}}
vol := map[string]struct{}{"\"localPath\":\"/pathInDocker\"":{}}
Run Code Online (Sandbox Code Playgroud)

对于每个这些,最终的docker容器都会尝试将map密钥作为docker中的文件夹安装,而没有localhost的安装点。

我已经仔细阅读了文档,似乎似乎只能找到关于如何配置卷的唯一内容:

Volumes         map[string]struct{} // List of volumes (mounts) used for the container
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何配置它,以便将本地文件夹安装到该卷?

go docker

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

Docker 映射外部配置文件

我想通过卷制作一个外部配置文件并将其传递如下:

docker run MyImage -v /home/path/my_config.conf:folder2/(顺便说一句,对吗?)

但不知道如何将这本书与main.py……的论点联系起来。

我的DocekrFile

FROM python:3.6-jessie
MAINTAINER Vladislav Ladenkov

WORKDIR folder1/folder2

COPY folder2/requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

COPY folder2/*.py ./

?? how to link volume ??

ENTRYPOINT ["python3", "main.py", "@??volume??"]
Run Code Online (Sandbox Code Playgroud)

python docker dockerfile

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

使用docker-compose绑定单个文件

在我的docker-compose(3.7)文件中,我有类似

  - ./a/src/:/var/www/html/
  - ./a/config/local.php.ini:/usr/local/etc/php/conf.d/local.ini
Run Code Online (Sandbox Code Playgroud)

例如可以在示例中找到。

每当我在./a/src目录中的主机或其中的容器中更改某些内容时,/var/www/html/它都会按预期在另一侧更改。它们与应有的相同。

该文件不是这样。它被复制(我猜)到容器中。但是,如果我local.php.ini在主机上更改,或者/usr/local/etc/php/conf.d/local.ini其他主机保持不变。

这是预期的行为吗?如果是,为什么并且可以更改它,两个文件都与目录相同

注意:这与如何在卷中装载单个文件不是重复的。我的文件不是目录等文件。尽管如此,我还是尝试使用绝对目录,并按照建议进行了尝试,但这并没有改变。${PWD}

Docker version 19.03.1, build 74b1e89
docker-compose version 1.24.1, build 4667896b
Run Code Online (Sandbox Code Playgroud)

主机和容器系统是Debian。

containers docker docker-compose

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