2017-01-05 94 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

相關問題