这是我的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/
对于本地开发人员,我需要在 Docker 容器中安装不同的配置文件。使用命令行很容易做到这一点-v $(pwd)/bla.yaml:/location/bla.yaml。是否可以从文件中的volume(用docker volume create bla)创建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 容器中运行 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) 我正在使用官方的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容器内部的最佳方法是什么?
我们有一个工具,需要克隆几个Git存储库以汇总文档数据。我们希望将该工具放在Docker容器中,以便在本地和Jenkins轻松运行它,并实现可重复性。
Git存储库托管在需要使用SSH密钥进行身份验证的专用服务器上。因此,Docker容器必须以某种方式获得对运行该容器的用户的SSH密钥的访问权限。
我们有一个约束列表:
Dockerfile不会启用可重现性,而已经生成的Docker映像可以root用户身份运行-v,-u,...)问题:如果可能的话,我们如何实现?
有关:
root)我创建了一个 docker 镜像,允许用户使用 SSH 连接它。
出于安全原因,我希望用户可以更改他们的密码。我只使用 docker 命名的卷,所以我无法绑定 /etc/passwd 并且我不想挂载所有 /etc
有任何想法吗?提前致谢。
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) 我正在将我们的 Web 应用程序转移到 docker-compose 部署(Django、DRF、AngularJS)。
Docker 现在看起来很稳定,一切进展顺利。
我想要:
我已经设法使用环境变量和从 Djangosettings.py文件读取的 docker-compose 机密,并且它可以工作。缺点是环境变量仅限于简单的字符串,并且在发送 Python 列表、字典等时可能会带来一些转义挑战。我们还必须定义和维护大量环境变量,因为我们的 Web 应用程序安装在很多地方并且具有高度可配置性。
在前端(AngularJS),我们有两个constants.js文件和 nginx conf。我在 Dockerfile 中使用过CMD ["/start.sh"]并有一些sed命令。但这看起来真的很黑客,这也意味着我们必须定义和维护相当多的环境变量。
对于这些配置文件使用 Docker 卷是个好主意吗?
“卷文件”之类的东西是否确实存在(此处提到)或者它实际上是绑定安装?绑定挂载不太推荐,因为它们依赖于主机上的文件系统和文件路径。
Volumes 文档简要提到了文件:“文件或目录在容器中安装的路径”,但没有详细介绍。
我们的网络应用程序现在有简单的配置文件:
settings.pysite\contants.jsadmin\constants.js和:
我想避免将这些文件移动到可以安装的专用目录。
您能给我展示一个带有单个文件卷(不是绑定安装)的示例 docker-compose.yml 吗?
谢谢
我目前正在尝试使用官方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)
所以我的问题是如何配置它,以便将本地文件夹安装到该卷?
我想通过卷制作一个外部配置文件并将其传递如下:
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) 在我的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。
docker ×12
volumes ×2
containers ×1
django ×1
dockerfile ×1
git ×1
go ×1
linux ×1
mount ×1
passwd ×1
phpmyadmin ×1
python ×1
rabbitmq ×1
shell ×1
ssh-keys ×1
ubuntu-18.04 ×1
wordpress ×1