I develop distributed system and I consider situation: My application is working in docker that is running on host A and I want to call api from other service that is running on physical host B (without docker). Could I do it calling an IP or DNS address?
Other situation that concerns above problem:
I develop distributed system locally using docker-compose and I define there services: ServiceA, ServiceB and so on. If ServiceA has to call to ServiceB on port 8080 I call
http://ServiceB:8080/ and it works fine. In production each service should work on different host with different IP. So is it good way I will run each service on different host and I will call from ServiceA to ServiceB by
http://<IP_of_ServiceB>:8080 instead of using service name?
First question, yes, just make sure ports are exposed and reachable from the other host.
Second question, you can still do that (write down the ip of host B in an env or so). Or, you may want to consider using docker swarm to deploy your production stack. Combined with an overlay network, which makes your 2 hosts act like one, you can continue call like
version: '3' services: serviceA: image: serviceA ports: - "8080:8080" networks: swarm-net serviceB: image: serviceB networks: swarm-net ports: - "3000:3000" networks: swarm-net: driver: overlay