簡體   English   中英

使用docker-compose運行docker image

[英]Run docker image with docker-compose

我在C#中使用我的簡單應用程序與postgreSQL連接。 我想用這個應用程序創建圖像,然后用docker運行。

我使用時一切正常:

$ docker build
$ docker run postgres
$ docker run my_app

另外,當我從應用程序目錄使用compose時,一切都還可以:

$ docker-compose build
$ docker-compose up

但有沒有機會使用docker-compose為我之前建立的圖像?

我想將此圖像發布到我的repo,我的團隊中的其他人只需下載並運行此圖像(app + database)。

當我進行compose-build和next 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 composerepository使用以前創建的映像。

例:

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網絡,你需要在testnetwork docker-compose up之前創建testnetwork

您應該使用以下名稱構建映像:(registryName:RegistryPort)/ imagename:version

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

現在將這些行添加到docker-compose文件中:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM