当前位置:   article > 正文

狂神说Docker-compose(up100%成功版含详细流程)_docker-compose up

docker-compose up

Docker Compose

安装

1、下载

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

 2、授权

sudo chmod +x /usr/local/bin/docker-compose

 多看官网……

使用

官方文档:Get started with Docker Compose | Docker Documentation

为项目创建一个目录

  1. mkdir composetest
  2. cd composetest

1、应用 app.py

  1. import time
  2. import redis
  3. from flask import Flask
  4. app = Flask(__name__)
  5. cache = redis.Redis(host='redis', port=6379)
  6. def get_hit_count():
  7. retries = 5
  8. while True:
  9. try:
  10. return cache.incr('hits')
  11. except redis.exceptions.ConnectionError as exc:
  12. if retries == 0:
  13. raise exc
  14. retries -= 1
  15. time.sleep(0.5)
  16. @app.route('/')
  17. def hello():
  18. count = get_hit_count()
  19. return 'Hello World! I have been seen {} times.\n'.format(count)

2、Dockerfifile 应用打包为镜像

  1. FROM python:3.7-alpine
  2. WORKDIR /code
  3. ENV FLASK_APP=app.py
  4. ENV FLASK_RUN_HOST=0.0.0.0
  5. RUN apk add --no-cache gcc musl-dev linux-headers
  6. COPY requirements.txt requirements.txt
  7. RUN pip install -r requirements.txt
  8. EXPOSE 5000
  9. COPY . .
  10. CMD ["flask", "run"]

3、Docker-compose yaml文件 (定义整个服务,需要的环境。 web、redis) 完整的上线服务!

  1. version: "3.3"
  2. services:
  3. web:
  4. build: .
  5. ports:
  6. - "8000:5000"
  7. redis:
  8. image: "redis:alpine"

4、创建在项目目录中调用的另一个文件 requirements.txt

  1. flask
  2. redis

5、ll 查看 composeset 目录下的文件(共四个)

  1. [root@localhost composeset]# ll
  2. 总用量 16
  3. -rw-r--r--. 1 root root 514 622 09:30 app.py
  4. -rw-r--r--. 1 root root 111 622 09:32 docker-compose.yml
  5. -rw-r--r--. 1 root root 252 622 09:30 Dockerfile
  6. -rw-r--r--. 1 root root 12 622 09:30 requirements.txt
  7. [root@localhost composeset]#

启动 compose 项目(docker-compose up)

  1. # 第一次会卡在这里,执行 ctrl+c 退出
  2. # 然后执行 docker-compose build
  3. [root@localhost composeset]# docker-compose build
  4. redis uses an image, skipping
  5. Building web
  6. Step 1/10 : FROM python:3.7-alpine
  7. ---> 04ffff590161
  8. Step 2/10 : WORKDIR /code
  9. ---> Using cache
  10. ---> 4107e1d5ed13
  11. Step 3/10 : ENV FLASK_APP=app.py
  12. ---> Using cache
  13. ---> d1bb629e7b3e
  14. Step 4/10 : ENV FLASK_RUN_HOST=0.0.0.0
  15. ---> Using cache
  16. ---> 7e80aec14cb8
  17. Step 5/10 : RUN apk add --no-cache gcc musl-dev linux-headers
  18. ---> Using cache
  19. ---> ae486b762875
  20. Step 6/10 : COPY requirements.txt requirements.txt
  21. ---> Using cache
  22. ---> 3fb49663d185
  23. Step 7/10 : RUN pip install -r requirements.txt
  24. ---> Using cache
  25. ---> 7fe1f941980a
  26. Step 8/10 : EXPOSE 5000
  27. ---> Using cache
  28. ---> f783e608dfbe
  29. Step 9/10 : COPY . .
  30. ---> 3a9e40461254
  31. Step 10/10 : CMD ["flask", "run"]
  32. ---> Running in 0170979e445a
  33. Removing intermediate container 0170979e445a
  34. ---> fa9e4891a8a4
  35. Successfully built fa9e4891a8a4
  36. Successfully tagged composeset_web:latest
  37. # 再次执行 docker-compose up

 

 到这里则启动成功!

  1. # 查看 docker images
  2. # 查看 docker ps
  3. [root@localhost composeset]# docker images
  4. REPOSITORY TAG IMAGE ID CREATED SIZE
  5. composeset_web latest fa9e4891a8a4 20 minutes ago 182MB
  6. <none> <none> 045735153dcc 39 minutes ago 182MB
  7. redis alpine f934e82c14d1 8 days ago 28.4MB
  8. python 3.7-alpine 04ffff590161 2 weeks ago 45.5MB
  9. [root@localhost composeset]# docker ps
  10. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  11. 4ee1892094c0 composeset_web "flask run" 20 minutes ago Up 20 minutes 0.0.0.0:8000->5000/tcp, :::8000->5000/tcp composeset_web_1
  12. fe5a3e801682 redis:alpine "docker-entrypoint.s…" 39 minutes ago Up 20 minutes 6379/tcp composeset_redis_1
  13. [root@localhost composeset]#
  14. # 输入 ip地址:8000 则可以看到 hello world 页面

自动的默认规则?

 docker images

  1. [root@localhost composeset]# docker service ls
  2. 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.
  3. [root@localhost composeset]#

docker-compose

以前都是单个 docker run 启动容器

docker-compose。 通过 docker-compose 编写 yaml配置文件、可以通过 compose 一键启动所有服

务,停止。!

Docker小结:

1、Docker 镜像。 run => 容器

2、DockerFile 构建镜像(服务打包)

3、docker-compose 启动项目(编排、多个微服务/环境)

4、Docker 网络

(B站狂神说Docker 要PDF文件可私信我)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/74113
推荐阅读
相关标签
  

闽ICP备14008679号