[英]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.