标签: docker-compose

与Docker Compose不同的env文件但是相同的yml?

我发现我有多个环境(例如test和prod)很常见,但我希望启动的Docker容器在两种环境中都是相同的.唯一的区别是我想要使用的应用程序配置env-file.由于我有多个容器和它们之间的依赖关系,我想使用docker-compose.但是afaik我只能指定文件env-file内部docker-compose.yml(参见docs).如果是这种情况,那么我需要将原始docker-compose.yml文件克隆到两个不同的文件(一个用于测试,一个用于prod),只是为了指向不同的env文件.这意味着我必须维护两个docker-compose.yml文件而不是一个,如果我做了任何更改,我需要更新这两个文件.

这真的是根据设计吗?为什么docker-compose不让我指明--env-file我什么时候docker-compose updocker-compose run

docker docker-compose

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

使用docker-compose将docker容器相互链接时如何处理IP地址?

我正在使用docker-compose来构建一个完整的开发堆栈.

该应用程序需要一个mysql服务器才能工作.

mysql服务器是docker-compose设置的外部容器:

mysql:
    image: mysql:5.6
    volumes:
        - /data/mysql:/var/lib/mysql
        - ./docker/mysql.d:/etc/mysql/conf.d
    ports:
        - "3306:3306"
    environment:
        MYSQL_ROOT_PASSWORD: password
Run Code Online (Sandbox Code Playgroud)

该应用程序有自己的docker-compose.yml并引用mysql容器:

my-application:
    build: . # the Dockerfile resides in the current folder
    ports:
        - "9180:80"
        - "9543:443"
    external_links:
        - mysql_mysql_1:mysql
environment:
    DOCKER_ENVIRONMENT: dev
    DB_NAME: local_db
    DB_PASS: password
    DB_USER: root
    DB_HOST: # how to set the mysql's IP address?
Run Code Online (Sandbox Code Playgroud)

我无法在docker-compose中传递它们,因为它是动态的.

我知道应用程序知道mysql IP地址,因为我设置了某些变量:

application-container$ env|grep ADDR 
    MYSQL_PORT_3306_TCP_ADDR=172.17.0.241
Run Code Online (Sandbox Code Playgroud)

然而,这不是我的要求DB_HOST.

我可以以某种方式映射变量DB_HOST或以不同方式设置它吗?

ip docker docker-compose

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

如何打开/运行YML撰写文件?

如何在计算机上打开/运行YML撰写文件?我已经安装了Docker for Windows和Docker工具,但无法弄清楚如何.

docker docker-compose docker-for-windows

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

无法执行脚本 docker-compose

我使用 mac 10.11.6 El capan 并安装了 docker 工具箱,我正在尝试使用 docker compose 构建选项,但我抛出了一些错误,如下所示,

kj$ docker-compose -f docker-compose-dev.yml build
Traceback (most recent call last):
  File "docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 71, in main
  File "compose/cli/main.py", line 124, in perform_command
  File "compose/cli/command.py", line 41, in project_from_options
  File "compose/cli/command.py", line 113, in get_project
  File "compose/config/config.py", line 380, in load
  File "compose/config/config.py", line 380, in <listcomp>
  File "compose/config/config.py", line 513, in process_config_file
  File "compose/config/config.py", line 221, in get_service_dicts
  File "distutils/version.py", line 46, in …
Run Code Online (Sandbox Code Playgroud)

docker-compose

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

使用Docker Compose运行时的端口发布

我似乎无法找到一种方法让端口发布以docker-compose run尽可能相同的方式工作docker run.

使用Docker Compose(以及端口映射docker-compose.yml)会产生"连接失败"错误curl:

$ docker-compose run flask
 * Running on http://0.0.0.0:2048/ (Press CTRL+C to quit)

$ curl http://localhost:2048/
curl: (7) Failed connect to localhost:2048; Connection refused
Run Code Online (Sandbox Code Playgroud)

但是,手动将端口传递到时,一切正常docker run:

$ docker run -p 2048:2048 --name flask -t flask_image
 * Running on http://0.0.0.0:2048/ (Press CTRL+C to quit)

$ curl http://localhost:2048
Hello World!
Run Code Online (Sandbox Code Playgroud)

我错过了什么?


Dockerfile

FROM centos:7

# Install EPEL repo.
RUN rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

# Install Python and Pip.
RUN …
Run Code Online (Sandbox Code Playgroud)

port docker docker-compose

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

我们可以在docker中挂载命名卷的子目录吗?

docker-compose文件https://docs.docker.com/compose/compose-file/#/volumes-volume-driver显示了相对于撰写文件安装主机子目录的各种方法.

例如:

卷:#只需指定一个路径,让Engine创建一个卷 - /var/lib/mysql

#指定绝对路径映射 - /opt/data:/ var/lib/mysql

#主机上的路径,相对于Compose文件 - ./cache:/tmp/cache

#用户相对路径 - 〜/ configs:/ etc/configs /:ro

#Named volume - datavolume:/ var/lib/mysql

是否可以在特定位置安装命名卷的子目录?例如下面的东西,我试过,但似乎不起作用.

# Named volume
  - datavolume/sql_data:/var/lib/mysql
Run Code Online (Sandbox Code Playgroud)

我假设我可以通过将数据卷安装到类似位置/data然后在每个容器的Dockerfiles中来管理这个,创建从子目录到位置的符号链接.

例如,在docker-compose.yml文件中

volumes:
  - datavolume:/data
Run Code Online (Sandbox Code Playgroud)

然后在容器Dockerfile中

RUN ln -s /data/sql_data /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)

我开始沿着这条路走下去,但它变得凌乱而且无法正常工作.在我放弃这种方法或投入时间调试它之前,我想确保没有办法只指定命名vollume的子目录.

docker dockerfile docker-compose

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

禁用docker-compose项目的自动启动

我有一个使用Docker for Mac的docker-compose项目,当我启动计算机时自动启动.

我通常会启动项目docker-compose up -d,但是甚至docker-compose stop在关闭之前运行它会在启动时再次自动启动它.

我不知道具体实现这个.我该如何禁用它?

autostart docker-compose docker-for-mac

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

Docker从容器访问本地主机端口

我有一个运行 Nuxt.js (Vue.js) 应用程序的容器,定义如下docker_composes.yml

version: '3'
services:
  vue:
    build: .
    image: registry.gitlab.com/something/app:${TAG}
    environment:
      - apiPath="http://localhost:5000/"
      - filePath="http://localhost:3000/"
    ports:
     - "${EXPOSED_PORT:-80}:${NUXT_PORT:-3000}"
    restart: always
Run Code Online (Sandbox Code Playgroud)

该应用程序是一个前端。我在本地主机上运行后端,在端口上5000。当容器化应用程序尝试连接到http://localhost:5000/它时失败。

我有哪些选择?我不想将后端放入docker_composes.yml并通过链接连接它们。如果这是唯一的选择,我会的。

docker docker-compose

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

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
查看次数