docker - 如何将此docker命令转换为docker-compose?

标签 docker docker-compose

我手动运行此命令:

$ docker run -it --rm \
    --network app-tier \
    bitnami/cassandra:latest cqlsh --username cassandra --password cassandra cassandra-server

但是我不知道如何将其转换为docker compose文件,特别是容器的自定义属性,例如--username--password

我应该在docker-compose.yaml文件中写什么才能获得相同的结果?

谢谢

最佳答案

一个示例cassandra docker-compose.yml可能是

version: '2'

services:
  cassandra:
    image: 'bitnami/cassandra:latest'
    ports:
      - '7000:7000'
      - '7001:7001'
      - '9042:9042'
      - '9160:9160'
    volumes:
      - 'cassandra_data:/bitnami'
volumes:
  cassandra_data:
    driver: local

尽管这不会为您提供命令行参数,但是会使用默认的CMD或ENTRYPOINT来启动它。

当您实际运行另一个命令时,默认设置可能不希望通过docker-compose进行。或者,您可以使用此命令作为默认命令创建一个新的Docker镜像,并提供用户名和密码作为ENV的

例如像这样(未经测试)
FROM bitnami/cassandra:latest

ENV USER=cassandra
ENV PASSWORD=password

CMD ["cqlsh", "--username", "$USER", "--password", "$PASSWORD", "cassandra-server"]

你可以建立它
docker build -t mycassandra .

并使用以下命令运行它:
docker run -it -e "USER=foo" -e "PASSWORD=bar" mycassandra

或在docker-compose中
services:
  cassandra:
    image: 'mycassandra'
    ports:
      - '7000:7000'
      - '7001:7001'
      - '9042:9042'
      - '9160:9160'
    environment:
      USER:user
      PASSWORD:pass
    volumes:
      - 'cassandra_data:/bitnami'
volumes:
  cassandra_data:
    driver: local

关于docker - 如何将此docker命令转换为docker-compose?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48794544/

相关文章:

java - Spring看不到docker容器内的application.properties

docker-compose - Traefik docker-compose 仅​​创建一个前端路由而不是 3 个

docker-compose - Azure Devops - 找不到 Docker Compose 构建镜像

docker - 在 Windows 上连接到 docker 容器

mysql - 导入 data.sql MySQL Docker 容器

docker - 如何在 Github 操作中为计算引擎虚拟机拉取 Docker 镜像?

Docker Composer ,约束 - 没有找到预期的 key

ssl - Docker-compose + Nginx SSL 反向代理

logging - Docker rsyslog 驱动程序在实际消息之前添加消息长度

node.js - Node 容器无法使用 docker for windows 运行