是否可以将 docker-compose 文件“导入”或链接到另一个 docker-compose 文件中?
假设我有两个文件:
# docker-compose-1.yml
services:
A:
# config
B:
# config
Run Code Online (Sandbox Code Playgroud)
# docker-compose-2.yml
services:
C:
# config
import: docker-compose-1.yml
Run Code Online (Sandbox Code Playgroud)
通过运行docker-compose -f docker-compose-2.yml up,我想启动容器 A、B(在导入的文件中指定)和 C。这可能-f吗,而不必将两个文件与参数链接起来?
我扩展了 Wordpress 图像以添加 XDebug、PHPUnit、composer 和 phpcs。
我的项目根目录如下所示:
docker-wordpress
Dockerfile
docker-compose.yml
.env
docker-compose.yml:
version: '3.7'
services:
db:
image: mysql:5.7
volumes:
- ./docker-mysql/db_data:/var/lib/mysql
restart: always
ports:
- "3306:3306"
env_file: .env
wordpress:
depends_on:
- db
image: progonkpa/mywordpress
ports:
- "80:80"
- "443:443"
restart: always
volumes:
- ./src:/var/www/html
env_file: .env
volumes:
db_data:
Run Code Online (Sandbox Code Playgroud)
此配置有效,但只是因为我显式添加了 env_file 声明,而我认为如果我遵循正确的约定,Docker 会自动获取该文件:根目录中的 .env 文件。
我实际上想删除 docker-compose.yml 中的 env_file 声明,但后来遇到了一些问题。
MySQL 容器日志:
database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD
Run Code Online (Sandbox Code Playgroud)
我似乎在第一次运行容器初始化时,与 mysql 相关的变量没有出现。.env …
我正在docker使用命令构建图像
docker-compose -f "docker-compose.yml" up -d --build
Run Code Online (Sandbox Code Playgroud)
但它返回一个错误
ERROR: 2 matches found based on name: network officeconverter_default is ambiguous
这有点清楚,在我的机器上有两个同名的网络试图存在。
问题是如何从 docker 网络中删除网络
PS E:\repos\Github\officeconverter> docker network ls 网络 ID 名称驱动程序范围 868c88a83bd6桥桥本地 92f7d20ed432 officeconverter_default 桥接本地 3f96cfb7b591 officeconverter_default 桥接本地
我在设置中运行官方Redis图像https://hub.docker.com/_/redis/docker-compose.
myredis:
image: redis
Run Code Online (Sandbox Code Playgroud)
如何redis-cli在该图像上使用docker-compose 运行?
我尝试了以下,但它没有连接:
docker-compose run myredis redis-cli
> Could not connect to Redis at 127.0.0.1:6379: Connection refuse
Run Code Online (Sandbox Code Playgroud)
图像的文档说我应该运行:
docker run -it --rm \
--link some-redis:redis \
redis \
sh -c 'exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"'
Run Code Online (Sandbox Code Playgroud)
这如何转化为docker-compose run?
我目前正在努力部署我的服务,我想问一下,当你必须处理多个存储库时,正确的方法是什么.存储库是独立的,但要在生产中运行,一切都需要启动.
我的设置:
两者都可以独立运行,测试可以由CI执行
我已经尝试将这两个服务作为子模块包含到Nginx存储库中并使用nginx repo的docker-compose,但我对此并不满意.
我希望能够从docker机器外部和内部对Identity Server(STS)进行身份验证.
我在设置容器内外的正确权限时遇到问题.如果我将权限设置为内部名称,mcoidentityserver:5000则API可以进行身份验证,但客户端无法获取令牌,因为客户端位于docker网络之外.如果我将权限设置为外部名称,localhost:5000则客户端可以获取令牌,但API无法识别权限名称(因为localhost在这种情况下是主机).
我该如何设置权限?或许我需要调整码头网络?
我正在设置一个Windows 10 docker开发环境,它使用ASP.NET Core API(在Linux上),Identity Server 4(Linux上的ASP.NET Core)和PostgreSQL数据库.PostgreSQL不是问题,包含在图表中以保证完整性.它被映射到9876,因为我现在还在主机上运行了一个PostgreSQL实例.mco是我们公司的简称.
我一直在遵循Identity Server 4的说明来启动和运行.
我不包括docker-compose.debug.yml它,因为它运行的命令只与在Visual Studio中运行相关.
泊坞窗,compose.yml
version: '2'
services:
mcodatabase:
image: mcodatabase
build:
context: ./Data
dockerfile: Dockerfile
restart: always
ports:
- 9876:5432
environment:
POSTGRES_USER: mcodevuser
POSTGRES_PASSWORD: password
POSTGRES_DB: mcodev
volumes:
- postgresdata:/var/lib/postgresql/data
networks:
- mconetwork
mcoidentityserver:
image: mcoidentityserver
build:
context: ./Mco.IdentityServer
dockerfile: Dockerfile
ports:
- 5000:5000
networks:
- mconetwork
mcoapi: …Run Code Online (Sandbox Code Playgroud) 泊坞窗,compose.yml:
version: "3"
services:
ei:
build:
context: .
dockerfile: Dockerfile
args:
NODE_VERSION: 8
HELLO: 5
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
ARG NODE_VERSION
ARG HELLO
FROM node:$NODE_VERSION
RUN echo "-> $HELLO"
RUN echo "-> $NODE_VERSION"
Run Code Online (Sandbox Code Playgroud)
结果是:
km@Karls-MBP ~/dev/ve (km/ref) $ docker-compose -f docker-compose.yml build --no-cache
vertica uses an image, skipping
Building ei
Step 1/14 : ARG NODE_VERSION
Step 2/14 : ARG HELLO
Step 3/14 : FROM node:$NODE_VERSION
---> e63de54eee16
Step 4/14 : RUN echo "-> $HELLO"
---> Running in e93d89e15913
->
Removing intermediate container e93d89e15913 …Run Code Online (Sandbox Code Playgroud) 当我运行以下命令时,我希望退出代码为 0,因为我的combined容器运行了一个成功退出的测试,退出代码为 0。
docker-compose up --build --exit-code-from combined
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使我的combined容器中的测试成功运行,我也始终收到 137 的退出代码,并且我以 0 的退出代码退出该容器(下面指定了有关如何发生的更多详细信息)。
以下是我的 docker-compose 版本:
docker-compose version 1.25.0, build 0a186604
Run Code Online (Sandbox Code Playgroud)
根据这篇文章,137 的退出代码可能是由于两个主要问题。
docker stop,应用程序没有正常处理 SIGTERM我知道 137 退出代码不是因为我的容器内存不足。当我运行时docker inspect <container-id>,我可以看到“OOMKilled”是假的,如下面的代码片段所示。我还为 Docker 引擎分配了 6GB 的内存,这对于我的应用程序来说已经足够了。
[
{
"Id": "db4a48c8e4bab69edff479b59d7697362762a8083db2b2088c58945fcb005625",
"Created": "2019-12-12T01:43:16.9813461Z",
"Path": "/scripts/init.sh",
"Args": [],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false, <---- shows container did not run out of memory
"Dead": …Run Code Online (Sandbox Code Playgroud) 我已经将 Windows 10 更新到 2004 最新版本,安装了 wsl2 并更新了它,安装了 docker 和 ubuntu。
当我使用“Hello World”创建一个简单的index.php文件时,它运行良好(响应:100-400ms)但是当我添加我的Laravel项目时,它变得很糟糕,因为它在执行请求之前加载了 7秒,响应为4 - 7秒,即使PHPMyAdmin运行非常顺利(响应:1 - 2 秒)。
我的 docker-compose.yml文件:
version: '3.8'
networks:
laravel:
services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- mysql
- phpmyadmin
networks:
- laravel
mysql:
image: mysql:latest
container_name: mysql
restart: unless-stopped
tty: true
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: secret
SERVICE_TAGS: dev
SERVICE_NAME: mysql …Run Code Online (Sandbox Code Playgroud) docker docker-compose windows-subsystem-for-linux docker-for-windows
我是 Docker 的新手,并尝试使用纯 html 构建 docker 映像,但我收到此错误消息,说 无法使用前端 dockerfile.v0 解决:无法读取 dockerfile:open /var/lib/docker/tmp/buildkit-mount602954594 /Dockerfile: 没有那个文件或目录
我的文件夹目录是这样的
C:\Users\hailey\Desktop\GitTest
|- Dockerfile.txt
|- README.md
|- testHelloWorld.html
Run Code Online (Sandbox Code Playgroud)
在 Dockerfile 里面,我有
FROM ubuntu
WORKDIR C/Users/hailey/Desktop/GitTest
COPY testHelloWorld.html .
EXPOSE 8080
CMD ["html","testHelloWorld.html"]
Run Code Online (Sandbox Code Playgroud)
我做了我的命令 docker build 。在目录 C:\Users\hailey\Desktop\GitTest 内。然后得到
[+] Building 0.1s (2/2) FINISHED
=> [internal] load build definition from Dockerfile
=> => transferring dockerfile: 2B
=> [internal] load .dockerignore
=> => transferring context: 2B
failed to solve with frontend dockerfile.v0: failed to read dockerfile: …Run Code Online (Sandbox Code Playgroud) docker ×10
docker-compose ×10
cypress ×1
dockerfile ×1
windows-subsystem-for-linux ×1
wordpress ×1