首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Docker命令转换为docker-compose.yml时出错

将Docker命令转换为docker-compose.yml时出错
EN

Stack Overflow用户
提问于 2020-03-27 04:07:30
回答 1查看 965关注 0票数 2

当尝试使用Compose 3将以下2个停靠命令转换为docker-compose.yml

代码语言:javascript
复制
docker run​ \
    --name timescaledb \
    --network timescaledb-net \
    -e POSTGRES_PASSWORD=insecure \
    -e POSTGRES_INITDB_WALDIR=/var/lib/postgresql/data/pg_wal \
    -e PGDATA=/var/lib/postgresql/data/pg_data \
    timescale/timescaledb:latest-pg11 postgres \
    -cwal_level=archive \
    -carchive_mode=on \
    -carchive_command="/usr/bin/wget wale/wal-push/%f -O -" \
    -carchive_timeout=600 \
    -ccheckpoint_timeout=700 \
    -cmax_wal_senders=1

代码语言:javascript
复制
docker run​ \
    --name wale \
    --network timescaledb-net \
    --volumes-from timescaledb \
    -v ./backups:/backups \
    -e WALE_LOG_DESTINATION=stderr \
    -e PGWAL=/var/lib/postgresql/data/pg_wal \
    -e PGDATA=/var/lib/postgresql/data/pg_data \
    -e PGHOST=timescaledb \
    -e PGPASSWORD=insecure \
    -e PGUSER=postgres \
    -e WALE_FILE_PREFIX=file://localhost/backups \
    timescale/timescaledb-wale:latest

在运行docker-compose up时,我们得到以下错误

错误:撰写文件‘./docker-come.yml’无效,因为: services.wale:'volumes_from‘的不支持配置选项

如何正确翻译两个Docker命令以使用Compose 3?我们需要能够指定主机上卷的位置(即./timescaledb)。

使用Mac 10.15.3,Docker 19.03.8,Docker组成1.25.4

docker-compose.yml

代码语言:javascript
复制
version: '3.3'
services:
  timescaledb:
    image: timescale/timescaledb:latest-pg11
    container_name: timescaledb
    ports:
    - 5432:5432
    environment:
     - POSTGRES_PASSWORD=insecure
     - POSTGRES_INITDB_WALDIR=/var/lib/postgresql/data/pg_wal
     - PGDATA=/var/lib/postgresql/data/pg_data
    command: -cwal_level=archive -carchive_mode=on -carchive_command="/usr/bin/wget wale/wal-push/%f -O -" -carchive_timeout=600 -ccheckpoint_timeout=700 -cmax_wal_senders=1
    volumes:
      - ./timescaledb:/var/lib/postgresql/data
    networks:
      - timescaledb-net

  wale:
    image: timescale/timescaledb-wale:latest
    container_name: wale
    environment:
     - WALE_LOG_DESTINATION=stderr
     - PGWAL=/var/lib/postgresql/data/pg_wal
     - PGDATA=/var/lib/postgresql/data/pg_data
     - PGHOST=timescaledb
     - PGPASSWORD=insecure
     - PGUSER=postgres
     - WALE_FILE_PREFIX=file://localhost/backups
    volumes_from:
      - tsdb
    volumes:
      - ./backups:/backups
    networks:
      - timescaledb-net
    depends_on:
      - timescaledb

networks:
  timescaledb-net:
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-27 05:41:33

在容器timescaledb中,您实际上是将/var/lib/postgresql/data挂载到./timescaledb,因此,如果您想对wale容器使用相同的卷,可以编辑wale容器如下:

代码语言:javascript
复制
...
    volumes:
      - ./backups:/backups
      - ./timescaledb:/var/lib/postgresql/data
...

在这种情况下,这两个容器将能够从相同的安装卷读写到您的本地机器。

此外,请记住删除此部分,因为它不是docker-组合中的有效命令:

代码语言:javascript
复制
    volumes_from:
      - tsdb
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60879866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档