标签: docker-compose

在另一个 compose 文件中导入 docker compose 文件

是否可以将 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吗,而不必将两个文件与参数链接起来?

docker docker-compose

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

为什么需要在 docker-compose.yml 中显式声明 env_file?

我扩展了 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 …

wordpress environment-variables docker docker-compose

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

错误:根据名称找到 2 个匹配项:network <nameofservice>_default 不明确

我正在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 桥接本地

docker docker-compose docker-network

23
推荐指数
2
解决办法
6485
查看次数

在docker-compose设置中调用redis-cli

我在设置中运行官方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

docker docker-compose

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

使用docker-compose和多个存储库

我目前正在努力部署我的服务,我想问一下,当你必须处理多个存储库时,正确的方法是什么.存储库是独立的,但要在生产中运行,一切都需要启动.

我的设置:

  • Git存储库后端:
    • 后端项目导轨
    • docker-compose:backend(公开3000),db和redis
  • Git Repository Frontend
    • Express.js服务器
    • docker-compose :(暴露4200)

两者都可以独立运行,测试可以由CI执行

  • 用于生产的Git Repository Nginx
    • 需要连接到其他两个服务(相同的docker网络)
    • 将请求转发给正确的服务

我已经尝试将这两个服务作为子模块包含到Nginx存储库中并使用nginx repo的docker-compose,但我对此并不满意.

docker microservices docker-compose

22
推荐指数
1
解决办法
7216
查看次数

如何在docker机器内外使用IdentityServer4?

我希望能够从docker机器外部和内部对Identity Server(STS)进行身份验证.

我在设置容器内外的正确权限时遇到问题.如果我将权限设置为内部名称,mcoidentityserver:5000则API可以进行身份​​验证,但客户端无法获取令牌,因为客户端位于docker网络之外.如果我将权限设置为外部名称,localhost:5000则客户端可以获取令牌,但API无法识别权限名称(因为localhost在这种情况下是主机).

我该如何设置权限?或许我需要调整码头网络?

红色箭头是我遇到麻烦的部分. 网络中的三个docker容器,一个客户端和PostgreSQL Admin,它们的端口和一个红色箭头显示我认为问题所在.

详情

我正在设置一个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)

docker docker-compose identityserver4

22
推荐指数
2
解决办法
3631
查看次数

docker-compose build args没有传递给Dockerfile

泊坞窗,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)

docker docker-compose

22
推荐指数
1
解决办法
6576
查看次数

没有OOM异常时Docker-compose退出代码为137

当我运行以下命令时,我希望退出代码为 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 的退出代码可能是由于两个主要问题。

  1. 容器收到一个docker stop,应用程序没有正常处理 SIGTERM
  2. 容器内存不足 (OOM)。

我知道 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)

docker docker-compose cypress

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

在 Nginx 容器 wsl2 上运行 Laravel 时,Docker 非常慢

我已经将 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

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

无法使用前端 dockerfile 解决

我是 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 dockerfile docker-compose

22
推荐指数
8
解决办法
4万
查看次数