使用docker-compose运行docker映像

Grz*_*ekO 5 c# postgresql docker dockerfile docker-compose

我在C#中有一个与PostgreSQL连接的简单应用程序。我想使用此应用程序创建图像并仅在docker上运行。

我使用时一切正常:

$ docker build
$ docker run postgres
$ docker run my_app
Run Code Online (Sandbox Code Playgroud)

此外,当我在应用程序目录中使用compose时,一切正常

$ docker-compose build
$ docker-compose up
Run Code Online (Sandbox Code Playgroud)

但是是否有机会将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
Run Code Online (Sandbox Code Playgroud)

我当前的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
Run Code Online (Sandbox Code Playgroud)

wil*_*onW 4

您应该使用以下名称构建映像:(registryName:RegistryPort)/imagename:version

$ docker build -t myRegistry.example.com:5000/myApp:latest .
$ docker build -t myRegistry.example.com:5000/myDb:latest .
Run Code Online (Sandbox Code Playgroud)

现在将这些行添加到 docker-compose 文件中:

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

MyDb:                        
  image: myRegistry.example.com:5000/myDb:latest
Run Code Online (Sandbox Code Playgroud)

然后推它:

$ docker push myRegistry.example.com:5000/myApp:latest
$ docker push myRegistry.example.com:5000/myDb:latest
Run Code Online (Sandbox Code Playgroud)

你的伴侣现在应该可以拉它了

$ docker pull myRegistry.example.com:5000/myApp:latest
$ docker pull myRegistry.example.com:5000/myDb:latest
Run Code Online (Sandbox Code Playgroud)