我volumes_from在docker compose中经历了选项.显然,您可以从容器或服务导入卷.从docker撰写的文档中,它是:
volumes_from
从另一个服务或容器挂载所有卷,可选择指定只读访问(ro)或读写(rw).
Run Code Online (Sandbox Code Playgroud)volumes_from: - service_name - service_name:ro - container:container_name - container:container_name:rw注意:仅在版本2文件格式中支持container:...格式.在版本1中,您可以使用容器名称而不将其标记为:
Run Code Online (Sandbox Code Playgroud)- service_name - service_name:ro - container_name - container_name:rw
我很困惑,这里的容器和服务有什么区别?
我是 docker 新手,我有一个包含 2 个 dotnet 核心项目的 Visual Studio 解决方案 - UI 和 API。我已经为这两个项目添加了 docker 支持,并且在我调试时它们都可以正常工作。现在他们有一个 http 客户端可以从网络调用 api,但它突然开始给出“无法分配请求的地址”错误。
奇怪的是,这个错误只出现在一台电脑上。我有第二台电脑,仍然可以顺利运行项目。其他团队成员都没有看到此错误。
我已经修剪了所有容器和图像,但这没有帮助。我没有使用 docker-compose,所以我在相关问题上找到的答案对我不起作用。
这里的文章解释了 localhost 在 docker 中如何以不同的方式解释,但我不确定如何使他的解决方案为我工作。
事实上,这个问题在其他电脑上没有发生,这才是真正让我困惑的地方。
注意:我不确定需要共享代码的哪一部分,因为我不知道与此问题相关的内容。
dotnet-httpclient docker .net-core docker-compose asp.net-core
我想将docker-compose.yaml文件保存在 git 存储库中。我想要一些默认.env变量,但我也想要一些.env.local可以覆盖的东西.env,但我不想提交,.env.local所以它应该被 gitignored。
有没有办法告诉docker-compose.yaml“如果存在则使用.env.local,否则使用.env”?
这个想法是允许某人克隆存储库,.env.local如果他们愿意的话可以使用自己的存储库,而无需 git 更改来提交或使用默认.env值(如果他们不想自定义它)。
我使用EndeavourOS并于 2022 年 2 月 17 日更新了我的系统
sudo pacman -Syu
Run Code Online (Sandbox Code Playgroud)
从那时起,当我运行时docker-compose,我收到此错误消息:
[4221] 加载 Python lib '/tmp/_MEIgGJQGW/libpython3.7m.so.1.0' 时出错:dlopen:libcrypt.so.1:无法打开共享对象文件:没有这样的文件或目录
一些论坛帖子建议重新安装 docker-compose,我照做了。我尝试了以下解决方案,但都没有成功:
Python3.7:加载共享库时出错:libpython3.7m.so.1.0
我该如何解决这个问题?
我正在尝试运行最新的稳定版docker和docker-compose.
我按照https://docs.docker.com/engine/installation/linux/ubuntulinux/上的说明进行操作
显然当前版本的docker-compose是1.7.
然而,在完成文档,安装docker-engine后,我得到:
$ docker-compose --version
docker-compose version: 1.4.0
Run Code Online (Sandbox Code Playgroud)
和
$ docker --version
Docker version 1.11.1, build 5604cbe
Run Code Online (Sandbox Code Playgroud)
当我尝试更新它时,我得到以下内容:
$ sudo apt-get upgrade docker-engine
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... docker-engine is already the newest version.
Done
Run Code Online (Sandbox Code Playgroud)
更新
这只是变得越来越陌生.在尝试下面的所有建议后,我现在得到这个:
$ docker-compose -v
The program 'docker-compose' is currently not installed. You can install it by typing:
sudo apt-get install docker-compose
anton@Charles:~$ sudo apt-get install docker-compose
Reading package lists... Done
Building dependency …Run Code Online (Sandbox Code Playgroud) 我有一个Dockerfile,我指的是docker-compose.yml.
我希望docker-compose.yml中的卷安装发生在Dockerfile之前RUN.
Dockerfile:
FROM node
WORKDIR /usr/src/app
RUN npm install --global gulp-cli \
&& npm install
ENTRYPOINT gulp watch
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml
version: '2'
services:
build_tools:
build: docker/gulp
volumes_from:
- build_data:rw
build_data:
image: debian:jessie
volumes:
- .:/usr/src/app
Run Code Online (Sandbox Code Playgroud)
首先完成Dockerfile,然后从docker-compose安装它是完全合理的,但有没有办法解决它.
我想保持Dockerfile的通用性,同时从compose中传递更多特定的位.也许这不是最好的做法?
在Visual Studio 2017中创建具有docker支持的新.NET核心应用程序时,它会创建许多docker-compose.yml文件.docker-compose.vs.debug.yml和release变量都包含对名为DOCKER_BUILD_SOURCE的环境变量的引用:
version: '2'
services:
app:
image: app:dev
build:
args:
source: ${DOCKER_BUILD_SOURCE}
environment:
- DOTNET_USE_POLLING_FILE_WATCHER=1
volumes:
- ./app:/app
- ~/.nuget/packages:/root/.nuget/packages:ro
- ~/clrdbg:/clrdbg:ro
entrypoint: tail -f /dev/null
labels:
- "com.microsoft.visualstudio.targetoperatingsystem=linux"
The purpose of this variable seems to be a reference to the source directory, however, it always seems to be empty.
Run Code Online (Sandbox Code Playgroud)
我无法找到有关此主题的更多详细信息...有没有人有想法或指向某些文档的指针?
environment-variables docker docker-compose visual-studio-2017
我目前正在尝试node express使用https://medium.com/@sunnykay/docker-development-workflow-node-express-mongo-4bb3b1f7eb1e本教程mongodb
第一部分工作正常,在哪里建立docker-compose.yml
它的工作完全找到在本地建立它所以我试图标记它,并推入我dockerhub学习和尝试更多.
这最初是yml教程后面的文件中的内容
version: "2"
services:
web:
build: .
volumes:
- ./:/app
ports:
- "3000:3000"
Run Code Online (Sandbox Code Playgroud)
当我使用docker-compose build和时,这就像一个魅力docker-compose up
所以我试着把它推到我的dockerhub,我也把它标记为 node-test
然后我将yml文件更改为
version: "2"
services:
web:
image: "et4891/node-test"
volumes:
- ./:/app
ports:
- "3000:3000"
Run Code Online (Sandbox Code Playgroud)
然后我删除了我以前的所有图像,以确保它也有效...但是当我运行时,docker-compose build 我看到这个消息error: web uses an image, skipping,没有任何反应.
我试过谷歌搜索错误,但我找不到任何东西.
有人可以帮我一把吗?
提前致谢
有没有办法在使用 docker-compose 时设置堆栈名称?
目前它采用文件夹名称(这是一个可怕的区域),这会导致一些混乱。
例如,我们有几个项目有一个包含数据库堆栈的数据库文件夹。在单个主机上运行这些时,我们现在有几个数据库堆栈。
我正在使用自定义脚本运行Flask应用程序。还是尝试,无论如何。
我在Windows 10上,应用程序应在Linux Docker容器中使用以下命令运行:
docker-compose up api
Run Code Online (Sandbox Code Playgroud)
Docker-compose是version 1.23.2。在dockerfile中,该api服务通过以下命令运行:
command: python manage.py run --host "0.0.0.0" --with-threads
Run Code Online (Sandbox Code Playgroud)
在尝试启动时,我看到了异常
OSError: [Errno 8] Exec format error: '/api/manage.py'
Run Code Online (Sandbox Code Playgroud)
我最初以为这将是“可怕的Windows行尾”,再次给我,但是dos2unix在我的所有源文件上运行都无法解决问题。
如何避免此错误?
manage.py
docker-compose up api
Run Code Online (Sandbox Code Playgroud)
完整回溯
api_1 | Traceback (most recent call last):
api_1 | File "manage.py", line 22, in <module>
api_1 | cli()
api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 764, in __call__
api_1 | return self.main(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.6/site-packages/flask/cli.py", line 380, in main
api_1 | …Run Code Online (Sandbox Code Playgroud) docker-compose ×10
docker ×8
python ×2
.net-core ×1
archlinux ×1
asp.net-core ×1
dockerfile ×1
flask ×1
mongodb ×1
node.js ×1
ubuntu ×1
windows ×1