docker-compose 文件的编写

网络连接问题

1. 如何连接未在 docker-compose.yaml 中声明的服务?

创建一个专属网络 web-net ,并将已存在的容器添加进来

docker network create web-net

# 除了使用命令链接,也可以在容器创建时指定 --network web-net
docker network connect web-net some-mongo # some-mongo 为 mongodb 的容器名

定义 docker-compose.yaml

version: '3.2'

services:
  pb:
    image: ptpb/pb:latest
    ports:
      - '10002:10002'
    external_links:
      - "some-mongo:mongodb" # 链接外部网络中的容器,取别名 mongodb
    volumes:
      - .:/pb
    environment:
      - 'LISTEN_ADDRESS=::' # 请填写具体的域名
      - 'LISTEN_PORT=10002'
      - 'CDN_PREFIX=//d34zelngniy2d8.cloudfront.net'
    networks:
      - default # 默认为 default,这一选项可以省略
networks:
  default: # 将本网络与外部网络链接
    external:
      name: web-net

这样,执行 docker-compose up,就会创建名为 ${pwd}_pb_1 这个容器,并连接到  web-net 中的 mongodb 服务。

 

2. 使用 Caddy 管理网络

① caddy docker-compose.yml

version: '3.2'

services:
  some-caddy:
    image: abiosoft/caddy
    restart: always
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - ./Caddyfile:/etc/Caddyfile
    environment:
      - ACME_AGREE=true
networks:
  default:
    external:
      name: web-net

②连接网络

docker network connect web-net some-caddy # 将 caddy 容器添加到 web-net 网络

③ Caddyfile

paste.lemo.site {
  proxy / pb:10002 {
    transparent
  }
  gzip
  log ../access.log
  tls abc@xxx.com
}

 

3. 注意事项

关于容器间访问与非容器间访问:

docker-compose.yml 中配置的 ports 用于非容器间访问(比如浏览器客户端访问)。因为容器间访问通常不需要配置 ports 的,比如访问 mysql,通常使用 http://mysql:3306 访问,而无须管你的 3306映射到哪个端口(因为 ports 只针对非容器见访问)。

 

4. 一些博客

Compose配置文件介绍

 

5.共享数据卷

https://segmentfault.com/a/1190000011209501

 

6.将当前容器更新

docker-compose pull

docker-compose up -d --no-deps --build

 

 

转载于:https://my.oschina.net/lemos/blog/1933990

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值