postgresql – 如何在docker中使用volume来撰写postgres?
这是我正在使用的
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) 但是,如果我使用码头组合 泊坞窗,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_volume中存在test_db 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组合找不到它 有人可以帮我吗?
关于你的docker-compose文件
>首先我以为这是因为你不使用’links’选项将你的postgres容器链接到web容器 – 这是很好的做法,如果你不扩展端口 – 但是你扩展postgres端口.
使用: docker/postgres 并创建路径docker / postgres,并将Dockerfile放在您想要的容器中. >我总是在docker-compose.yml中使用共享卷,如下所示: :在/ var / www / html等 在哪里是我的项目路径,我放置我的代码文件. 我创建的图像来测试这种情况 我没有你的所有docker文件结构来重现这个错误并修复它,所以我创建了docker-compose,这应该符合您的需要或帮助解决您的问题: version: '2' services: web: build: docker/web ports: - "8080:8080" links: - dbpostgres volumes: - .:/var/www/html # I will share my code so I map this path dbpostgres: image: postgres volumes: - /private/var/lib/postgresql:/var/lib/postgresql ports: - "5432:5432" environment: POSTGRES_USER: pguser POSTGRES_PASSWORD: pguser POSTGRES_DB: pgdb 笔记: >我会推荐使用官方postgres的形象 我怎么连接: host=dbpostgres port=5432 dbname=pgdb user=pguser password=pguser 因为我的Web容器现在知道主机dbpostgres(映像名称和域名) – 我使用链接链接他们. 如果您需要现有容器中的数据库 如果您需要现有容器中的数据库,只需使用docker cp选项即可复制数据库localy: docker cp posgres_test:/var/lib/postgresql /private/var/lib/postgresql 其中/ private / var / lib / postgresql是本地主机上的路径. 任何问题,让我知道. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |