在本文中,我们将带你了解Docker-compose-web在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的25.dockercompose简介和docker-compose.yml参数介
在本文中,我们将带你了解Docker-compose-web在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的25.docker compose 简介 和 docker-compose.yml 参数介绍、circus && web comsole docker-compose 分开部署、circus && web comsole docker-compose 独立部署、Docker Compose 和 Docker Swarm 和 Docker Service。
本文目录一览:- Docker-compose-web
- 25.docker compose 简介 和 docker-compose.yml 参数介绍
- circus && web comsole docker-compose 分开部署
- circus && web comsole docker-compose 独立部署
- Docker Compose 和 Docker Swarm 和 Docker Service
Docker-compose-web
[root@mt-lingshui-math math-junior]# cat Dockerfile FROM java:8 MAINTAINER java8 images VOLUME /tmp COPY minte-math-junior-2.0.1.RELEASE.jar app.jar RUN bash -c "touch /app.jar" RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo ''Asia/Shanghai'' >/etc/timezone EXPOSE 6060 ENTRYPOINT ["java","-jar","/app.jar"] ############################################ [root@mt-lingshui-math math-junior]# cat docker-compose.yml version: ''3'' services: web: image: math-junior:latest build: ./ restart: always ports: - "6060" # volumes: # - "/opt/Docker-Ser-mtmath/math-junior/logs:/logs" # springbt-math-junior02: # container_name: springbt-math-junior02 # image: springbt-math-junior-image # build: ./ # restart: always # ports: # - "3032:6060" # volumes: # - "/opt/Docker-Ser-mtmath/springboot-math-junior/logs:/logs" # networks: # mall-network: # aliases: # - math-junior02 # deploy: # mode: replicated # replicas: 1 # #networks: # mall-network: # driver: bridge
25.docker compose 简介 和 docker-compose.yml 参数介绍
1. docker compose概念 文档 https://docs.docker.com/compose/compose-file/compose-versioning
一个基于 docker 的工具
可以通过一个 yml 文件定义多容器的 docker 应用
通过一条命令就可以根据 yml 文件的定义 去创建或者管理这多个容器
2 docker compose 版本 2 与 版本 3 的区别
最大的区别
version 2 只能用于单机
version 3 可用于多机
3. docker-compose.yml
Services
一个 service 代表一个 container , 这个 container 可以从 dockerhub 的 image 来创建, 或者从本地的 Dockerfile build出来的image 来创建
service 的启动 类似与 docker run , 我们可以给其指定 network 和 volume . 所以可以给 service 指定 network 和 volume 的引用
eg :
docker run -d --name db -v db-data:/var/liv/postgresql/data --network back-tier postgres:9.4
services:
db: #service 的名称为 db
image: postgres:9.4 #service image 为 postgres:9.4 这是从远程拉取的
volumes:
- "db-data:/var/liv/postgresql/data" #将外部db-data挂载到container 的 /var/liv/postgresql/data 内
networks:
- back-tier #网络为 back-tier
eg2:
docker run -d --link db --link redis --network back-tier worker
services:
worker:
build: ./worker
links:
- db
- redis
networks:
- back-tier #在同一个网络上 不需要links
Volumes:
上面 的
volumes:
- "db-data:/var/liv/postgresql/data" #将外部db-data挂载到container 的 /var/liv/postgresql/data 内
会有单独的一个 volumes (与 services 同级别) 对db-data 进行 阐述
类似于 docker volume create db-data
eg:
volumes:
db-data:
Nerworks:
上面 的
networks:
- back-tier #在同一个网络上 不需要links
会有单独的一个 networks (与 services 同级别) 对back-tier 进行 阐述
类似于 docker nerwork create -d bridge back-tier
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
4编写 docker-compose.yml
# docker compose api 版本
version: ''3''
services:
# 定义了 两个 service 分别是 名字分别是 wordpress 和 mysql
wordpress:
#image 为 word press
image: wordpress
#本地 8888 端口 映射 容器 80 端口
ports:
- 8888:80
#wordpress 连接数据库 的 host 为 mysql , passwword 为 root 类似于 -e
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
#指定连接 的网络 为 my-bridge
networks:
- my-bridge
mysql:
image: mysql:5.7.27
# 数据库 root 的 连接密码 和 所使用的数据库名称
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
# 外部 mysql-data 挂载到 容器内的 /var/lib/mysql
volumes:
- mysql-data:/var/lib/mysql
#指定连接 的网络 为 my-bridge
networks:
- my-bridge
# 定义 volumes
volumes:
mysql-data:
# 定义 networks
networks:
my-bridge:
driver: bridge
circus && web comsole docker-compose 分开部署
问题的根本原因是web console 的bug(实际上还是python 对于依赖版本出来不明确)
circus 进程docker 镜像
- dockerfile
FROM python:slim-stretch
LABEL AUTHOR="dalongrong"
LABEL EMAIL="[email protected]"
workdir /app
RUN apt-get update && apt-get install -y --reinstall build-essential \
&& pip install circus chaussette \
&& apt-get remove -y --purge build-essential \
&& rm -rf /var/lib/apt/lists/*
copY circus.ini /app/
copY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]
- entrypoint.sh
#!/bin/sh
circusd /app/circus.ini
- circus demo 配置文件
[circus]
statsd = True
?
[watcher:webapp]
cmd = /usr/local/bin/chaussette --fd $(circus.sockets.web)
numprocesses = 5
use_sockets = True
?
[socket:web]
host = 0.0.0.0
port = 9999