docker-compose下的docker之间通讯不能直接使用ip的方式通讯,因为ip会因为server端的变化而变化.所以一般都是用compose file中的container_name来进行通讯.
下面是docker-compose的composefile;
version: '2'
services:
androidlink:
build:
context: ./java-env/build-docker-image/
dockerfile: java8-env.dk
image: java8env
restart: always
depends_on:
- mqtt
- db
volumes:
- ./java-env/run-docker-image/run.sh:/root/adv/run.sh
- ./java-env/run-docker-image/server.conf:/root/adv/server.conf
- ./java-env/run-docker-image/m2mserver.jar:/root/adv/m2mserver.jar
- ./java-env/run-docker-image/models:/root/adv/models
- ./java-env/run-docker-image/vnctoken:/root/adv/vnctoken
- ./java-env/run-docker-image/logs:/root/logs
- ./java-env/run-docker-image/conf:/root/adv/conf
ports:
- "8080:8080"
command: /root/adv/run.sh
container_name: m2mserver
links:
- "mqtt"
- "db"
networks:
- advnet
mqtt:
build:
context: ./mosquitto/
dockerfile: Dockerfile
image: m2m-mosquitto
restart: always
volumes:
- ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf
ports:
- "1883:1883"
- "11880:11880"
container_name: m2m_mosquitto
networks:
- advnet
db:
image: postgres:9.4
restart: always
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: aimlink
ports:
- "5432:5432"
container_name: m2m-postgresSQL
networks:
- advnet
networks:
advnet:
下面为java的postgresql的配置文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.password">postgres</property>
<property name="hibernate.connection.release_mode">after_transaction</property>
<property name="hibernate.connection.url">jdbc:postgresql://m2m-postgresSQL:5432/aimlink</property>
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.jdbc.batch_size">30</property>
<property name="hibernate.jdbc.fetch_size">50</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.search.autoregister_listeners">false</property>
<property name="hibernate.validator.apply_to_ddl">false</property>
<mapping class="com.advantech.mdm.dbmger.entity.DeviceGroup" />
<mapping class="com.advantech.mdm.dbmger.entity.ClientDevice" />
<mapping class="com.advantech.mdm.dbmger.entity.User" />
<mapping class="com.advantech.mdm.dbmger.entity.DeviceUpgradeStatus" />
</session-factory>
</hibernate-configuration>
下面时mqtt的配置
MQTT_SERVER = m2m_mosquitto
MQTT_PORT = 1883