在实际应用中,免不了容器之间需要互相访问。
最简单的,如javaweb
程序需要访问mysql
,我们一般都是把自己编写的一个javaweb
应用打包成一个镜像,mysql
则使用厂商已经提供了的镜像
这里我们考虑两个容器处于同一宿主机的情况,跨主机通讯以后再讲。
- Step 1
我们启动一个mysql
容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -v /home/docker/Volumn/mysql:/var/lib/mysql registry.cn-hangzhou.aliyuncs.com/sherry/mysql:5.7
注意,这里我们并没有保留端口
- Step 2
如何编写javaweb
程序我就不讲了,找到我们配置数据源的地方
...
spring:
profiles: dev
datasource:
# 使用高性能数据源
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://ip:3306/resv_sys?useSSL=false&autoReconnect=true&useUnicode=true&characterEncoding=utf8
hikari:
minimum-idle: 15
maximum-pool-size: 250
idle-timeout: 30000
pool-name: DatebookHikariCP
max-lifetime: 120000
connection-timeout: 30000
connection-test-query: SELECT 1
connection-init-sql: set names utf8mb4
...
把这里的第10行,当我们不使用容器的时候,我们一般配置的是mysql
服务器的ip,这里我们可以改成任何一个名称,如:mysqlhost
然后启动这个容器
docker run -d -p 80:80 --link mysql:mysqlhost --name app XXXXXX
--link mysql:mysqlhost
的意思是,连接名称为mysql
的容器,其在当前容器中的别名为mysqlhost