Ali*_*inN 1 teamcity docker docker-compose
我正在使用 Maven 插入 docker compose 文件,以便映射 Linux 和 Windows 中的工作目录。插值在两种操作系统上都按预期工作。在我的本地 Windows 环境中,当运行“docker compose up”时,我获得了两个具有映射卷(已存在于主机上)的容器,而没有在顶层指定“volumes:” ,仅在服务级别指定。
但是,如果我尝试在基于 Linux 的 TeamCity 中运行相同的设置,我会收到以下消息“服务“job_controller”引用未定义的卷路径/到/目标/类:无效的撰写项目”
从这里检查其他人的答案后,我明白我还必须在顶层指定“volumes:”,这是我在撰写文件的底部所做的。
现在,系统提示我“不允许卷附加属性 /opt/buildagent/work/9857567c5e342350/path/to/target/classes”
name: Distributed
services:
create_database:
container_name: create_database
command:
- ./script.sh
- deployer
- -f
- ../config/product-mssql-v11.manifest.yaml
- drop-create-database-properties
image: alpine-3-corretto-11-wildfly-11.11.0-SNAPSHOT
networks:
- deploy
volumes:
- C:\\SourceCode\\Path\\to\\target/classes:/opt/product/config
healthcheck:
test: ["CMD", "/opt/product/script.sh", "deployer", "-f", "/opt/product/config/product-mssql-v11.manifest.yaml", "healthy"]
interval: 20s
timeout: 60s
retries: 5
job_controller:
container_name: job_controller
environment:
DEPLOYMENT_MANIFEST: /opt/product/config/main.manifest.yaml
PROPERTIES_FILE_NAME: /opt/product/config/risk-wildfly.properties
JAVA_OPTS: "-Xms1g -Xmx4g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1g -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"
ports:
- 8080:8080
image: alpine-3-corretto-11-wildfly-11.11.0-SNAPSHOT
volumes:
- C:\\SourceCode\\Path\\to\\target/classes:/opt/product/config
networks:
- deploy
depends_on:
create_database:
condition: service_completed_successfully
restart: on-failure
healthcheck:
test: ["CMD", "/opt/product/script.sh", "health-check", "--context-path","product"]
interval: 20s
timeout: 60s
retries: 5
networks:
deploy:
name: deploy
external: true
volumes:
C:\\SourceCode\\Path\\to\\target/classes:
external: true
Run Code Online (Sandbox Code Playgroud)
现在,在本地,如果我尝试使用底部指定的“卷:”运行“docker compose up” ,我也会得到相同的“不允许卷附加属性 C:\SourceCode\Path\to\target/classes”
如果,而不是
volumes:
C:\\SourceCode\\Path\\to\\target/classes:
external: true
Run Code Online (Sandbox Code Playgroud)
我用
volumes:
Run Code Online (Sandbox Code Playgroud)
我得到“卷:”必须是一个映射。所以这都不起作用。
C:\>docker compose version
Docker Compose version v2.10.2
C:\>docker-compose version
docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.9.0
OpenSSL version: OpenSSL 1.1.1g 21 Apr 2020
C:\>docker version
Client:
Cloud integration: v1.0.29
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:09:02 2022
OS/Arch: windows/amd64
Context: default
Experimental: true
Server: Docker Desktop 4.12.0 (85629)
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:01:23 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.8
GitCommit: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Run Code Online (Sandbox Code Playgroud)
考虑到卷映射,如何在两个操作系统中成功运行它?
小智 6
如果您想将特定文件夹从主机映射到 docker 容器,则不需要 root 部分
volumes:
Run Code Online (Sandbox Code Playgroud)
根本不
它用于在 docker 内部的某处创建命名卷,并在服务定义的卷部分中按名称引用它们(如果设置了外部标志,则跨多个 docker-compose 文件)
| 归档时间: |
|
| 查看次数: |
16982 次 |
| 最近记录: |