2017-01-05 3 views
3

저는 C#에서 postgreSQL과 연결되는 간단한 앱을 가지고 있습니다. 이 앱으로 이미지를 만들고 docker로 실행하고 싶습니다.도커가있는 도커 이미지 실행하기

$ docker build 
$ docker run postgres 
$ docker run my_app 

또한, 내가 응용 프로그램 디렉토리에서 구성을 사용할 때, 모든 확인이 :

$ docker-compose build 
$ docker-compose up 

을하지만 사용 고정 표시기-작성을위한 어떤 기회가 내가 사용하는 경우

모든 것이 괜찮습니다 이전에 만들었던 이미지는?

이 이미지를 내 레고에 게시하고 다른 팀원이이 이미지 (앱 + 데이터베이스)를 다운로드하여 실행하고 싶습니다.

나는 데이터베이스에 연결하는 동안 나는 예외를 가지고 다음 작성 실행을 my_app 빌드를 구성 할 때 : 나의 현재 고정 표시기-compose.yml 파일

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 

:

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

자신 만의 이미지를 사용하는 도커 작성 설정을 만들 수 있어야합니다. '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 

예 Explaination :

내 저장소에서 app라는 이름의 컨테이너 라이브러리 postgres 이미지를 통해 postgres라는 이름의 또 다른 컨테이너를 만드는거야.

맞춤 이미지를 먼저 저장소에 푸시해야합니다.

여기에서 user-defined 네트워크를 사용하고 있습니다. docker-compose up 전에 testnetwork을 만들어야합니다.

+0

비슷한 구조의이 docker-compose.yml 파일이 있습니다. 내 응용 프로그램을 실행하지만 postres에 연결하는 동안 예외가 있습니다. 내 연결 문자열 : "사용자 ID = postgres; 암호 = 암호; 서버 = postgres; 포트 = 5432; 데이터베이스 = POSTGRES_USER; 통합 보안 = 참; 풀링 = 참; 위에서 언급 한 두 가지 경우에서 작동합니다. – ogrod87

+0

docker-compose 또는 docker 빌드에서'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 

귀하의 동료가 지금 지금

01을 당겨 할 수 있어야한다
$ docker pull myRegistry.example.com:5000/myApp:latest 
$ docker pull myRegistry.example.com:5000/myDb:latest 
+0

예, 실행됩니다. 하지만 도커 작성만으로 실행하고 싶습니다. 하나의 명령은 데이터베이스가 – ogrod87

+0

인 앱을 실행해야합니다. 그러면 "docker-up up -d"를 실행하면됩니다. 두 앱 모두 실행됩니다. – wilsonW