分享

docker3 docker-compose

 新进小设计 2022-11-18 发布于北京

docker3 docker-compose

标签(空格分隔):编排文件 docker


dockfile -> image
docker-compose.yml -> project cluster

docker-compose.yml

version: "3.3"
services:
nginx: #容器的名称 服务名
image: nginx #容器的镜像 nginx:1.12
ports:
- "80:80"
links:
- app
volumes:
- "./nginx.conf.d/:/etc/nginx/conf.d/"

app:  #自己取的
 image:myapp/app
 
 
eureka:  #服务名
    build: ./eureka  #指定dockerfile所在路径
    ports: 
        - "8761:8761" #指定端口映射
    expose:
        - 8761  #暴露端口

docker compose安装

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose -v

pip3 install docker-compose

podman compose安装

pip3 install podman-compose

启动容器

docker-compose up -d

nginx 例如 上面

server {
listen 80;
server_name www.hosix.cn;
access_log /var/log/nginx/nginx.log main;
location / {
proxy_pass http://app:8080/;
}
}


docker-compose ps

查看容器

docker-compose start

启动所有容器

docker-compose stop

关闭所有容器

docker-compose rm

删除容器

docker-compose kill

直接杀掉

docker-compose down

关闭并移除

docker-compose 结构

三层 project service container
工程 微服务 容器

docker-compose.yml常用指令

image

指定镜像

build

指定dockerfile文件的路径

command

容器启动之后的默认命令
command: bundle exec thin -p 3000

连接到其他服务中的容器
web:
links:
- db
- db:database
- redis

连接到docker-compose.yml 外部的容器 甚至并非compose管理的容i去
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql

ports

暴露端口信息 类似 run -p
ports:
- "3000"
- "3000-3005"
- "8000-8000"

expose

暴露端口,只讲端口暴露给连接的服务,不暴露给宿主机
expose:
- "3000"
- "8000"

vulumes

卷挂载路径地址
vulumes:
- /var/lib/mysql
- /opt/data:/var/lib/mysql
- ./cache:/tmp/cache

volumes_from

从另一个服务或者容器挂载卷
volumes_from:
- service_name
- service_name:ro
- container:container_name

environment

设置环境变量。可以使用数组或则字典两种方式
RACK_ENV:development
SHOW:'true'
SESSION_SECRET:

docker-compose 高可用

新建文件夹 /app-ha
创建 docker-compose.yml 和多个服务的文件夹

version: "3.3"
services:
peer1: #容器的名称 服务名
image: appa #容器的镜像 nginx:1.12
ports:
- "8081:8081"
enviroment:
- spring.profiles.active=peer1
peer2: #容器的名称 服务名
image: appa #容器的镜像 nginx:1.12
ports:
- "8082:8082"
enviroment:
- spring.profiles.active=peer2
appb: #容器的名称 服务名
image: appb #容器的镜像 nginx:1.12
# ports:
# - "8083:8083"

docker 扩展

docker-compose scale appb=2

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多