这是我正在使用的image。
我把它命名为posgres_test
如果我单独运行映像
docker run -i -t -v="test_volume:/var/lib/postgresql" -p 5432:5432 posgres_test
我可以使用以下命令访问它
psql -h 192.168.99.100 -p 5432 -U pguser -W pgdb
或者我可以使用我的golang应用程序访问它
// host is set to postgres
db, err := sql.Open("postgres", "postgres://pguser:pguser@postgres:5432/pgdb")
// table test_db is manually created.
rows, err := db.Query("SELECT name FROM test_db WHERE)
但是,如果我使用docker compose
docker-compose.yml
version: "2"
services:
postgres:
image: my_image/postgresql:9.3
volumes:
- test_volume:/var/lib/postgresql
ports:
- "5432:5432"
web:
image: my-golang-app4
ports:
- "8080:8080"
volumes:
test_volume: {}
我得到了以下信息
pguser@pgdb ERROR: relation "test_db" does not exist at character 15
我确信test_db
存在于test_volume
中,因为
docker run -i -t -v="test_volume:/var/lib/postgresql" -p 5432:5432 posgres_test
psql -h 192.168.99.100 -p 5432 -U pguser -W pgdb
\dt
将显示我创建的表
但我在docker compose中的应用程序似乎找不到它
有人能帮帮我吗?
发布于 2017-02-13 08:46:43
如果卷是外部的,并且在使用docker-compose之前已经存在,则应该将其声明为外部,否则docker compose将创建一个以项目名称为前缀的新卷。
volumes:
test_volume:
external: true
使用compose v3的external
文档(主要类似于v2):https://docs.docker.com/compose/compose-file/compose-file-v3/#external
发布于 2017-02-08 21:08:42
我想对你来说应该是这样的。
docker run -itd -p 5432:5432 --name postgres_test -v /path/in/your/host :/path/in/your/container postgres_test psql -h 192.168.99.100 -p 5432 -U pguser -W pgdb
阅读Docker文档(https://docs.docker.com/engine/tutorials/dockervolumes/),观看教程(有一个Docker Youtube频道,里面有很棒的教程),并在发布新的教程之前阅读其他主题。
https://stackoverflow.com/questions/42107364
复制相似问题