【发布时间】:2017-01-05 09:10:23
【问题描述】:
我有一个简单的 C# 应用程序,它与 postgreSQL 连接。 我想用这个应用程序创建图像,然后用 docker 运行。
我使用时一切正常:
$ docker build
$ docker run postgres
$ docker run my_app
此外,当我从应用程序目录使用 compose 时,一切正常:
$ docker-compose build
$ docker-compose up
但是有没有机会为我之前构建的图像使用 docker-compose?
我想将此图像发布到我的存储库,我团队中的其他人只需下载并运行此图像(应用程序 + 数据库)。
当我进行 compose-build 和下一次 compose 运行 my_app 时,我在连接数据库时出现异常:
dbug: Npgsql.NpgsqlConnection[3]
Opening connection to database 'POSTGRES_USER' on server 'tcp://postgres:5432'.
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AggregateException: One or more errors occurred. (No such device or address) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address
我当前的 docker-compose.yml 文件:
version: '2'
services:
web:
container_name: 'postgrescoreapp'
image: 'postgrescoreapp'
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/var/www/postgrescoreapp
ports:
- "5001:5001"
depends_on:
- "postgres"
networks:
- postgrescoreapp-network
postgres:
container_name: 'postgres'
image: postgres
environment:
POSTGRES_PASSWORD: password
networks:
- postgrescoreapp-network
networks:
postgrescoreapp-network:
driver: bridge
【问题讨论】:
-
你应该能够创建一个使用你自己的图像的 docker compose 配置,当然。使用
build或image属性来构建您的图像或使用预定义的(在您的存储库中托管):docs.docker.com/compose/compose-file -
我已经在我的 docker-compose.yml 文件中使用了它。
-
那你的问题是什么?
-
当我执行 docker-compose build 和 docker run my_app 时,我的应用程序无法与 postres 连接,我做错了什么
-
那么我建议您将它与您的 Docker Compose 文件以及您用来运行的命令一起添加到您的问题中......目前,它不包括任何这些。
标签: c# postgresql docker docker-compose dockerfile