docker-compose.yml

version: '3'
services:
proxy:
image: nginx
ports:
- "80:80"
networks:
- frantnet
webapp:
build: .
networks:
- frantnet
- endnet
redis:
image: redis
networks:
- endnet
networks:
frantnet:
endnet:

  参数说明:

  • version: 声明语法版本
  • services: 指定服务
  • image: 指定使用的镜像
  • build: 使用编译Dockerfile的方式得到的镜像
  • networks: 使用, 创建网络
  • volumes: 数据卷, 处理容器中数据的持久化方式, 如果在多个容器见共享数据卷,则必须在顶级的volumes中定义这个数据卷

 

version: "3.2"
services:
web:
image: nginx:alpine
volumes:
- type: volume # 随机找一个临时目录
source: mydata
target: /data
- type: bind # 绑定相对目录,绝对目录
source: ./nginx/logs
target: /var/log/nginx
jenkins:
image: jenkins/jenkins:lts
volumes:
- jenkins_home:/var/jenkins_home
- mydata:/data
volumes:
mydata:
jenkins_home:



volumes两种方式:

1)绝对路径

db:
image: mariadb:latest
restart: always
ports:
- "3306:3306"
volumes:
- [直接使用宿主机的本地路径]:/var/lib/mysql

 

2)卷标

db:
image: mariadb:latest
restart: always
ports:
- "3306:3306"
volumes:
- [卷标名称]:/var/lib/mysql

volumes:
[卷标名称]:

使用卷标的方式,简洁易于管理,但是数据实际存放的位置需要费点周折才能看到。

查看某个卷信息: docker volume inspect volume_name
查看所有卷: docker volume ls



---

docker run -v /docker_dir ...
docker run -v /home:/docker_dir ...

当不指明宿主机目录时,Docker会默认在宿主机上创建一个临时目录: /var/lib/docker/volumes/[VOLUME_ID]/_data作为宿主机上的被挂载目录。
  • environment: 定义环境变量
  • ports: 定义端口映射
  • container_name: 指定容器名称
  • restart:
  • ​no​​是默认的重启策略,在任何情况下都不会重启容器。
  • ​always​​指定时,容器总是重新启动。
  • ​on-failure​​如果退出代码指示失败错误,则该策略会重新启动容器。
  • ​unless-stopped​​总是重新启动容器,除非容器停止(手动或其他方式)。

          

常用命令:

docker-compose -f docker-compose-dev.yml config

-f: 指定配置文件
-p: 指定项目名称

config:不会执行真正的操作,而是显示docker-compose程序解析的配置文件内容

  

示例:

docker-compose -p testnet -f docker-compose-net.yml up -d

   

常用服务:

elasticsearch:

version: "3.9"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.23
container_name: elasticsearch
environment:
- discovery.type=single-node
volumes:
- ./es/data:/usr/share/elasticsearch/data
# docker cp elasticsearch:/usr/share/elasticsearch/config/ ./es/
- ./es/config:/usr/share/elasticsearch/config
ports:
- 9200:9200
- 9300:9300
networks:
- elastic

networks:
elastic: