[英]How do I convert this docker command to 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
這是其他人如何做的一個示例。 http://abiasforaction.net/apache-cassandra-cluster-docker/
運行下面的命令
command:
在下面設置arg
environment:
請記住,僅僅是因為您可以做,並不意味着您應該做就做。撰寫並不總是啟動某些內容的最佳方法。 通常這可能是懶惰的方式。
如果您將其作為服務ID運行,建議構建dockerfile來啟動,然后創建systemd / init腳本來rm /重新啟動它。
您可能正在尋找類似以下的內容。 不確定是否會對您有幫助...。
version: '3'
services:
my_app:
image: bitnami/cassandra:latest
command: /bin/sh -c cqlsh --username cassandra --password cassandra cassandra-server
ports:
- "8080:8080"
networks:
- app-tier
networks:
app-tier:
external: true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.