大佬教程收集整理的这篇文章主要介绍了Docker Compose容器编排,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
官方文档:https://docs.docker.com/compose/
Docker Compose是一种工具,旨在帮助定义和共享多容器应用程序。使用 Compose,我们可以创建一个 YAML 文件来定义服务,并且可以使用单个命令来启动或拆除所有内容。 微服务多并且存在依赖关系,通过Docker Compose来简单高效管理、运行多个容器。
docker-compose version
cd /Users/docker-study
mkdir composetest
cd composetest
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def Hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.n'.format(count)
flask
redis
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
创建docker-compose.yml 文件
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
这个 Compose 文件定义了两个服务:web和redis.
docker-compose up
访问:http://0.0.0.0:5000/ 或者终端执行 :curl localhost:5000
docker service 命令查看
docker service ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
服务默认命名:文件名_服务名_num (比如:composetest_redis_1、composetest_web_1) 集群状态下 服务不可能只有一个实例。都是弹性扩缩容。后面通过Docker Swarm来弹性扩缩容
docker network ls
7502b862c0af composetest_default bridge local
如果在同一个网络下 可以直接使用域名访问
docker-compose stop
以前都是docker run
运行单个服务 ,通过docker-compose
编写yaml配置文件,可以一键启动、停止所有服务
docker-compose.yaml 核心 官方文档:https://docs.docker.com/compose/compose-file/ 查看Compose版本和 Docker版本对应关系,Compose命令等
# 3层
version: 3.8 # 版本
service: # 服务
服务1: web
# 服务配置
images
build
network
服务2: redis
# 其他配置 网络/卷、全局规则
volumes:
networks:
configs:
命令 | 说明 |
---|---|
depends_on | 控制容器启动顺序 |
官方地址: https://docs.docker.com/samples/wordpress/
cd my_wordpress/
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_password: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_password: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_password: wordpress
WORDPRESS_db_name: wordpress
volumes:
db_data: {}
wordpress_data: {}
docker-compose up -d
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
去dockerHub搜索镜像会发现,mysql5.7是amd64的架构,也就是Intel CPU的架构,也叫做x86_64。存在适配型问题,m1的芯片没有适合的镜像。 docker官方提供的MySQL没有arm64架构的,但MySQL官方提供的mysql/mysql-server有
# 修改yml文件:image: mysql:5.7 ==》 image: mysql/mysql-server
docker pull mysql/mysql-server
server.port=8080
spring.redis.host=redis
FROM java:8
COPY target/*.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]
version: 3.9
services:
mpy-app:
build: .
image: mpy-app
depends_on:
- redis
ports:
- "8080:8080"
redis:
image: "library/redis:alpine"
# 端口8080被占用
docker-compose up
lsof -i:8080
# 停止占用端口的容器
docker stop 容器id
docker-compose up --build
@H_607_207@
compose 3层:
以上是大佬教程为你收集整理的Docker Compose容器编排全部内容,希望文章能够帮你解决Docker Compose容器编排所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。