大佬教程收集整理的这篇文章主要介绍了Docker笔记(进阶篇)— Docker Compose,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_674_10@官方介绍@H_674_10@Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features.
Dockerfile
so it can be reproduced anywhere. @H_674_10@Dockerfile 保证我们的项目(app)可以在任何地方运行 docker-compose.yml
so they can be run together in an isolated environment. @H_674_10@进行配置服务在YAML配置文件当中 docker compose up
@R_197_6296@e Docker compose command starts and runs your entire app. You can alternatively run docker-compose up
using the docker-compose binary. @H_674_10@启动我们的项目(app) @H_674_10@总结:批量的容器编排 c;可以管理多个服务(容器)@H_674_10@Compose 是Docker官方的一个开源项目c;所以需要安装! @H_674_10@配置文件:docker-compose.yml
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
@H_674_10@我们的任务就是编写这样一个配置文件c;管理我们的多个服务(容器)
@H_674_10@实现通过docker-compose up 同时启动多个服务
@H_674_10@地址:https://docs.docker.com/compose/install/@H_674_10@ @H_674_10@1、下载Docker-Compose
#安装在Linux系统中
csudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#安装太慢的 把github源换成get.daocloud.io
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
@H_674_10@去到安装目录检查:下载成功!
@H_674_10@
@H_674_10@2、设置文件可执行权限
sudo chmod +x /usr/local/bin/docker-compose
@H_674_10@3、查看版本信息
docker-compose -version
@H_674_10@
@H_674_10@4、卸载Docker-Compose
sudo rm /usr/local/bin/docker-compose
@H_674_10@参考文档:https://docs.docker.com/compose/getTingstarted/@H_674_10@1、创建目录c;所有操作都在这个目录下进行
@H_603_163@mkdir composetest
cd composetest
@H_674_10@2、创建一个py应用c;(类似统计浏览次数,计数器)
import time
import redis #导入了我们的redis
from flask import Flask #导入了我们的Flask(python的一个框架依赖)
app = Flask(__name__)
cache = redis.redis(host=@R_607_6285@edis', 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)
@H_674_10@3、创建一个配置文本requirements.txt
flask
redis
@H_674_10@4、创建Dockerfile
# 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"]
@H_674_10@5、创建docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
@H_674_10@6、启动
docker-compose up
@H_674_10@启动成功!@H_674_10@
@H_674_10@测试结果@H_674_10@ @H_674_10@hhc;一键启动两个应用确实舒服!
StarTing composetest_web_1 ... done #web服务
StarTing composetest_redis_1 ... done #redis服务
@H_674_10@3、网络规则
@H_674_10@
@H_674_10@默认会生成一个网络c;10个服务=>网络(项目中的内容都在同一个网络下c;容器名访问)
@H_674_10@
@H_674_10@在同一个网络下可以直接通过容器名(域名)访问
@H_674_10@4、停止
@H_674_10@小节@H_674_10@1、Docker镜像c;run ==> 容器 @H_674_10@2、Dockerfile构建镜像(服务打包) @H_674_10@3、docker-compose启动项目(编排c;多个微服务/环境) @H_674_10@4、Docker网络! @H_674_10@5、项目需要更新c;
docker compose up --build
即可
@H_674_10@参考文档 : https://docs.docker.com/compose/compose-file/compose-file-v3/@H_674_10@核心:编写 docker-compose.yaml
#3层
version: '' #版本
services: #服务
服务1: web
#服务配置 docker容器的配置
images:
build:
network:
depends_on: #depents_on: web服务依赖redis和MySQl,让他们先启动!(这就是编排的原因)
-redis
-@H_710_72@mysql
服务2: redis
...
服务2: mysql
...
#其他配置 网络/卷、全局规则
volumes:
network:
configs:
@H_674_10@1、版本选择
@H_674_10@
@H_674_10@2、服务相关配置
@H_674_10@
@H_674_10@参考文档 :https://docs.docker.com/samples/wordpress/@H_674_10@1、创建目录并进入目录
@H_603_163@mkdir my_wordpress/
cd my_wordpress/
@H_674_10@2、编写docker-compose.yml
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
@H_659_71@mYSQL_ROOT_password: somewordpress
@H_659_71@mYSQL_DATABASE: wordpress
@H_659_71@mYSQL_USER: wordpress
@H_659_71@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: {}
@H_674_10@3、我们服务器的8000端口放行
@H_674_10@
@H_674_10@4、启动Compose
docker-compose up -d
@H_674_10@
@H_674_10@5、检测容器是否启动
docker ps
@H_674_10@
@H_674_10@6、访问测试:http://qxsong.top:8000/(自己的ip+8000端口)
@H_674_10@
@H_674_10@收工!!!
以上是大佬教程为你收集整理的Docker笔记(进阶篇)— Docker Compose全部内容,希望文章能够帮你解决Docker笔记(进阶篇)— Docker Compose所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。