2017-01-05 68 views
3

我在C#中用简单的应用程序连接postgreSQL。 我想用这个应用程序创建图像,并只与码头运行。用docker-compose运行docker图像

一切正常,当我使用:

$ docker build 
$ docker run postgres 
$ docker run my_app 

此外,还有一切就OK了,当我使用的应用程序目录组成:

$ docker-compose build 
$ docker-compose up 

但有使用泊坞窗,撰写任何机会对于我之前建立的图像?

我想将此映像发布到我的回购站以及我团队中的其他人只需下载并运行此映像(app +数据库)即可。

当我连接到数据库中谱写构建和未来撰写运行程序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 

我现在的码头工人,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 
+2

您应该可以创建一个使用您自己的图像的docker compose config,当然。使用'build'或'image'属性来构建图像或使用预定义的图像(您在回购站中托管):https://docs.docker.com/compose/compose-file/ – nwinkler

+0

我已经使用它在我的docker-compose.yml文件中。 – ogrod87

+0

那么你的问题是什么? – nwinkler

回答

1

是的,你可以使用repository之前创建的图像通过docker compose

例子:

version: '2' 
services: 
    app: 
    image: farhad/my_app 
    ports: 
     - "80:80" 
    networks: 
     - testnetwork 
    postgres: 
    image: postgres:latest 
    networks: 
     - testnetwork 
networks: 
    testnetwork: 
    external: true 

实例阐释:

我创建了一个名为从我的仓库app容器中经库postgres图像命名postgres另一个容器。

请注意,您需要先创建将自定义图像推送到存储库。

我在这里使用user-defined网络,您需要在docker-compose up之前创建testnetwork

+0

我有这个类似结构的docker-compose.yml文件。我的应用程序运行,但在连接到postres时出现异常。我的连接字符串是:“User ID = postgres; Password = password; Server = postgres; Port = 5432; Database = POSTGRES_USER; Integrated Security = true; Pooling = true;”如上所述,它适用于两种情况。 – ogrod87

+0

请从docker-compose或docker build发布'docker logs ' –

+0

? docker-compose工作正常,但只有当我从应用程序目录运行此命令 – ogrod87

0

,你应该建立与该名称的图像:(registryName:RegistryPort)/ imagename:版本

$ docker build -t myRegistry.example.com:5000/myApp:latest . 
$ docker build -t myRegistry.example.com:5000/myDb:latest . 

现在,这些行添加到泊坞窗,撰写文件:

Myapp:              
    image: myRegistry.example.com:5000/myApp:latest 

MyDb:       
    image: myRegistry.example.com:5000/myDb:latest 

,然后按它:

$ docker push myRegistry.example.com:5000/myApp:latest 
$ docker push myRegistry.example.com:5000/myDb:latest 

你的队友现在应该能够现在拉它

$ docker pull myRegistry.example.com:5000/myApp:latest 
$ docker pull myRegistry.example.com:5000/myDb:latest 
+0

是的,它也会运行。但我想只用docker-compose来运行。一个命令应该运行我的应用程序与数据库 – ogrod87

+0

然后你只需要做“码头 - 撰写-D”,它会运行这两个应用程序 – wilsonW

相关问题