Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
docker-compose下载安装:
[root@localhost /]# curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@localhost /]# docker-compose #如果提示权限不够,执行命令赋予权限
[root@localhost /]# chmod +x /usr/local/bin/docker-compose
[root@localhost /]# sudo docker-compose version #查看版本
docker-compose基础命令:
[root@localhost /]# docker-compose -h #查看帮助
[root@localhost /]# docker-compose --help [root@localhost /]# docker-compose -f docker-compose.yml up -d #-f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。 [root@localhost /]# docker-compose up -d #启动所有容器,-d 将会在后台启动并运行所有的容器 [root@localhost /]# docker-compose down #停用移除所有容器以及网络相关 [root@localhost /]# docker-compose logs -t -f –tail 300 #查看日志 [root@localhost /]# docker-compose ps #列出项目中目前的所有容器 [root@localhost /]# docker-compose build #构建(重新构建)项目中的服务容器。 [root@localhost /]# docker-compose pull #拉取服务依赖的镜像 [root@localhost /]# docker-compose restart #重启项目中的服务 [root@localhost /]# docker-compose rm #删除所有(停止状态的)服务容器。推荐先执行docker-compose stop命令来停止容器。 [root@localhost /]# docker-compose run ubuntu ping docker.com #在指定服务上执行一个命令。 [root@localhost /]# docker-compose scale web=3 db=2 #设置指定服务运行的容器个数。通过 service=num 的参数来设置数量 [root@localhost /]# docker-compose start #启动已经存在的服务容器。 [root@localhost /]# docker-compose stop #停止处于运行状态的容器但不删除它,docker-compose start可以再次启动这些容器。
docker-compose.yaml配置层级:
docker-compose.yaml文件分为三个主要部分:services、networks、volumes。
services主要用来定义各个容器。
networks定义需要使用到的network网关。
volumes定义services使用到的volume数据卷。
三层分别如下: version:
... services: web: images: ports: ... redis: ... volumes:
... networks:
... configs:
...
docker-compose.yaml配置注释:
#Docker-compose版本号。 version: '3' #用于指引Docker创建新的网络。默认情况下,DockerCompose会创建bridge网络。 networks: #配置容器连接的网络,引用顶级 networks 下的条目。 app_networks: #定义不同的应用服务(DockerCompose会将每个服务部署在各自的容器中)。 services: #指定服务名称 app_mysql: #指定服务使用的镜像 image: mysql:5.7 #指定容器名称 container_name: app_mysql
#设置容器总是重新启动。 restart: always #指定服务运行的端口 ports : - "33006:3306"
#配置容器连接的网络,是在networks一级key中定义的网络。
networks: - app_networks #指定容器的环境变量 environment: #数据库密码 - MYSQL_ROOT_PASSWORD=123456 #创建的库 - MYSQL_DATABASE=app #允许多IP连接数据库 - MYSQL_ROOT_HOST=%
app_redis: image: redis:latest restart: always ports: - ${REDIS_PORT}:6379 networks: - app_networks #将主机的数据卷或着文件挂载到容器里。 volumes: - ./redis/data:/data - /etc/localtime:/etc/localtime #指定 Docker 在容器中执行的脚本。(覆盖容器启动的默认命令)。 command: redis-server --requirepass ${REDIS_PASSWORD} app_api: networks: - app_networks #用来给容器root权限,不安全的。 privileged: true restart: always image: java:8 ports: - 8080 #添加环境变量。 environment: # 容器内端口。 - PORT=8080 # 配置文件加密key。 - ENCRYPTOR_PASSWORD=${ENCRYPTOR_PASSWORD} # 是否开启定时任务 1开启 其他不开启。 - TIMING_TASK_PERFORM=${TIMING_TASK_PERFORM} # 其他配置。 - OTHER_PARAMS=${OTHER_PARAMS} volumes: - /etc/localtime:/etc/localtime - ./logs:/logs - ./app-0.0.1-SNAPSHOT.jar:/app.jar
app_nginx: networks:
- app_networks
restart: always
image: nginx #设置依赖关系。
depends_on: #使用docker-compose up启动时 :以依赖性顺序启动服务。 #在以下示例中,先启动 app_api服务后才会启动app_nginx
- app_api ports: - ${OPEN_PORT}:8080 volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf
docker-compose.yaml配置的环境变量可以通过(.env)文件来构造,.env 文件仅在使用docker-compose.yaml 文件时的预处理步骤中使用。美元符号变量(如 $HI)被替换为同一目录中名为“.env”的文件中包含的值。
标签:容器,compose,app,Docker,root,docker,localhost From: https://www.cnblogs.com/LJing21/p/16962839.html