[英]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 compose
從repository
使用以前創建的映像。
例:
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.