极简入门Docker-Compose部署以及项目编排实战
👨🏻🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟
🌈擅长领域:Java、大数据、运维、电子
🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏,相应的有空了我也会回访,互助!!!
🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!
-
用处:定义、运行多个容器的程序,批量容器编排。
-
YAML配置文件
-
single command指令学习
-
使用Compose三个步骤:
- 定义Dockerfile
- 编写docker-compose.yaml
- 运行compose,docker-cmpose up启动
-
安装docker-compose
-
Linux
-
Docker Compose存放在GitHub,高速安装Docker Compose如下:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
-
给compose指令赋予可执行的权利
chmod +x /usr/local/bin/docker-compose
-
检测是否安装成功,不成功的话就需要重启服务器
[root@Contos7 ~]# docker-compose version docker-compose version 1.27.4, build 40524192 docker-py version: 4.3.1 CPython version: 3.7.7 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
-
-
Mac
- mac其实不需要安装,因为Docker Desktop中就自带compose。
-
-
compose初体验 📦
-
创建项目结构:
mkdir composetest && cd composetest
-
创建
app.py
文件,也就是项目文件: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)
-
建立requirements.txt文件
flask redis
-
编写Dockerfile
#将python:3.7-alpine作为基础镜像 FROM python:3.7-alpine #设置工作目录 WORKDIR /code #设置环境变量 ENV FLASK_APP=app.py #设置主机匹配所有地址,即所有主机可访问 ENV FLASK_RUN_HOST=0.0.0.0 #安装包的时候不安装到全局 #使员工gcc来编译程序,但是一旦程序被编译,我就不再需要gcc了,并且可以加快编译速度 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
#docker-compose版本号 version: "3.9" services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"
-
在docker-compose.yml所在目录使用docker-compose up启动(定义、运行多个容器),docker-compose down停止
-
Tips⚠️ :这样创建出的容器的名字是当前docker-compose.yaml所在目录的目录名加上yml中的服务名,尾部的num表示该容器的副本数量,这些副本可以发送到其他机器上运行,compose会构建一个默认的网络(不使用docker0),所有容器默认在一个网络中
-
使用idea用docker-compose打包发布
-
复制jar包pom配置
<!--复制jar包到指定目录--> <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>gen-webadmin</id> <phase>package</phase> <configuration> <tasks> <copy todir="docker" file="target/${project.artifactId}-${project.version}.${project.packaging}" /> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
-
-
-
yam规则
https://docs.docker.com/compose/compose-file/compose-file-v3/
docker-compose.yaml核心
#三层 #compops版本号 version: "xxx" #服务配置 services: server1: configuration1: configuration2: configuration3: configuration4 #启动顺序控制,先启动数组中的服务项,最后再启动本服务 depends_on: .... server2: configuration1 .... #全局配置 netowkr volume
-
使用docker-compose.yml构建wordpress博客园
-
docker-compose.yml
version: "3.8" services: db: image: mysql:5.7 volumes: - db_datas:/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 ports: - "5000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_datas: {}
-
使用docker-compose up -d可以让其在后台启动,不加-d表示在前台启动
-
- 点赞
- 收藏
- 关注作者
评论(0)