标签: docker-compose

docker-compose.yml 容器名称和主机名

什么是使用container_namedocker-compose.yml文件?我可以将它用作文件中hostname的服务名称吗docker-compose.yml

此外,当我hostname在服务下明确写入时,它是否会覆盖由service name?

docker docker-compose

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

React 应用程序退出 docker 容器,退出代码为 0

我正在尝试使用 nginzx、flask 和 react 创建 docker-compose 设置。我使用 react-create-app ( https://github.com/facebook/create-react-app )启动了我的 react 应用程序,但尚未对其进行任何更改。

我的反应应用程序的 Dockerfile 是:

FROM node:10

WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./
RUN npm install --verbose

# Bundle app source
COPY . .


EXPOSE 3000
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)

撰写脚本是:

version: '3.1'

services:
    nginx:
        image: nginx:1.15
        container_name: nginx
        volumes:
            - ../:/var/www
            - ./nginx-dev.conf:/etc/nginx/conf.d/default.conf
        ports:
            - 80:80
        networks:
            - my-network
        depends_on:
            - flask
            - …
Run Code Online (Sandbox Code Playgroud)

nginx docker reactjs docker-compose

24
推荐指数
3
解决办法
9703
查看次数

在Docker Compose中更改postgres容器服务器端口

我正在尝试使用Docker compose在远程服务器上部署第二个数据库容器.这个postgresql服务器在端口5433上运行,而不是第一个postgresql容器使用的5432.

当我设置应用程序时,我收到此错误输出:

web_1  | django.db.utils.OperationalError: could not connect to server: Connection refused
web_1  |    Is the server running on host "db" (172.17.0.2) and accepting
web_1  |    TCP/IP connections on port 5433?
Run Code Online (Sandbox Code Playgroud)

我的docker撰写文件是:

db:
  image: postgres:latest
  environment:
    POSTGRES_PASSWORD: route_admin
    POSTGRES_USER: route_admin
  expose:
    - "5433"
  ports:
    - "5433"
  volumes:
    - ./backups:/home/backups



web:
  build: .
  command:  bash -c "sleep 5 && python -u application/manage.py runserver 0.0.0.0:8081"
  volumes:
    - .:/code
  ports:
    - "81:8081"
  links:
    - db
  environment:
    - PYTHONUNBUFFERED=0
Run Code Online (Sandbox Code Playgroud)

我觉得问题必须是服务器实例上的postgresql.conf文件,将端口设置为5432,导致我的应用程序尝试连接时出错.是否有一种简单的方法可以使用compose文件中的命令更改端口,而不是使用卷来替换文件?

我正在使用官方的postgresql容器来完成这项工作.

postgresql docker docker-compose

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

Docker COPY在重建容器时不更新文件

我有一个docker-compose-staging.yml文件,我用它来定义一个PHP应用程序.我已经定义了应用程序代码所在的数据卷容器(app),并使用volumes_from与其他容器共享.

泊坞窗 - 撰写-staging.yml:

version: '2'
services:
    nginx:
        build:
            context: ./
            dockerfile: docker/staging/nginx/Dockerfile
        ports:
            - 80:80
        links:
            - php
        volumes_from:
            - app

    php:
        build:
            context: ./
            dockerfile: docker/staging/php/Dockerfile
        expose:
            - 9000
        volumes_from:
            - app

    app:
        build:
            context: ./
            dockerfile: docker/staging/app/Dockerfile
        volumes:
            - /var/www/html
        entrypoint: /bin/bash
Run Code Online (Sandbox Code Playgroud)

此特定的docker-compose-staging.yml用于将应用程序部署到云提供程序(DigitalOcean),而app容器的Dockerfile具有COPY命令,该命令将文件夹从本地目录复制到配置中定义的卷.

泊坞窗/分期/应用/ Dockerfile:

FROM php:7.1-fpm
COPY ./public /var/www/html/public
COPY ./code /var/www/html/code
Run Code Online (Sandbox Code Playgroud)

这在我第一次构建和部署应用程序时有效.我的公共和代码目录中的代码在远程服务器上存在且正确.我使用以下命令进行部署:

docker-compose -f docker-compose-staging.yml up -d
Run Code Online (Sandbox Code Playgroud)

但是,接下来我尝试将文件添加到我的本地公共目录,然后运行以下命令来重建更新的代码:

docker-compose -f docker-compose-staging.yml build app
Run Code Online (Sandbox Code Playgroud)

此重建的输出表明COPY命令成功:

Building app
Step 1 : FROM php:7.1-fpm
 ---> 6ed35665f88f
Step 2 …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose

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

Docker - 如何更新图像

我读到docker使用图层,因此在创建a containerDockerfile,从基本图像开始,然后后续命令运行向容器添加图层,因此如果保存新容器的状态,则会有新图像.我想知道有几件事情.

如果我从Ubuntu图像开始,这是一个非常庞大和笨重的图像,因为它是一个完整的操作系统,然后我添加了一些工具并将其保存为我上传到集线器的新图像.如果有人下载我的图像,并且他们已经保存了Ubuntu图像images folder,这是否意味着他们可以跳过下载,Ubuntu因为他们已经有了图像?如果是这样,当我修改原始图像的某些部分时,这是如何工作的,Docker是否使用其缓存数据Ubuntu image在加载后有选择地将这些更改应用于它?

2.)如何通过修改Dockerfile来更新我构建的图像?我用这个设置了一个简单的django项目Dockerfile:

FROM python:3.5

ENV PYTHONBUFFERED 1
ENV APPLICATION_ROOT /app
ENV APP_ENVIRONMENT L

RUN mkdir -p $APPLICATION_ROOT
WORKDIR $APPLICATION_ROOT
ADD requirements.txt $APPLICATION_ROOT
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . $APPLICATION_ROOT
Run Code Online (Sandbox Code Playgroud)

并用它来开始创建图像.所以每当我创建一个盒子时,它会加载所有这些environment variables,如果我完全重建盒子,它会重新安装包和所有附加物.我需要添加一个新的环境变量,所以我将它添加到Dockerfile了测试变量的底部:

ENV COMPOSE_CONVERT_WINDOWS_PATHS 1
ENV TEST_ENV_VAR TEST
Run Code Online (Sandbox Code Playgroud)

当我删除容器和图像,并构建一个新的容器时,它似乎都相应,它告诉我它创建了新的第4步:ENV

COMPOSE_CONVERT_WINDOWS_PATHS 1
 ---> Running in 75551ea311b2
 ---> b25b60e29f18
Removing intermediate container 75551ea311b2
Run Code Online (Sandbox Code Playgroud)

所以它就像在某些中间容器转换中丢失了一些东西.这是缓存系统的工作原理,每个新层都是一个intermediate container …

docker docker-compose

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

如何使用docker-compose重建和更新容器而无需停机?

我很喜欢使用docker-compose.

例如.在我的服务器上,当我想通过微小的更改来更新我的应用程序时,我只需要git pull origin master && docker-compose restart,完美地工作.

但有时,我需要重建(例如,我添加了一个npm依赖,需要npm install再次运行).

在这种情况下,我这样做docker-compose build --no-cache && docker-compose restart.

我希望这会:

  • 创建我的容器的新实例
  • 停止现有容器(在较新的容器完成后)
  • 开始新的
  • 可选择删除旧的,但这可以手动完成

但实际上它似乎又重新启动了前者.

这是预期的行为吗?

如何构建之后处理重建并启动新的重建?

也许我错过了一个特定的命令?拥有它会有意义吗?

docker docker-compose

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

"删除"Dockerfile中的VOLUME

我有一个Dockerfile扩展FROM声明了一个的图像VOLUME.有没有办法以这种方式覆盖VOLUME指令,它"删除" VOLUME

docker docker-compose

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

如何使用docker compose v3直接在容器中挂载NFS共享/卷

我有一个v3的撰写文件,其中有3个服务共享/使用相同的卷.在使用swarm模式时,我们需要创建额外的容器和卷来管理整个群集中的服务.

我打算使用NFS服务器,以便将单个NFS共享直接挂载到群集中的所有主机上.

我在下面找到了两种方法,但它需要在docker主机上执行额外的步骤 -

有没有一种标准的方法,我可以使用docker compose v3直接使用/挂载NFS共享,只需执行少量/无步骤(我知道无论如何都需要"nfs-common"包)在docker主机上?

docker docker-compose docker-swarm docker-swarm-mode

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

在另一个 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万
查看次数

错误:根据名称找到 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
查看次数