3

前言

突如其来的意外让本该快乐的我快乐不起来了,感情回来一趟就上了一天线下,经历了第一次坐救护车,赶上了一位特别倔的医生,别人的一周 = 一周 48小时,我的一周 = 一周,问了问医院说体温正常三天后就可以复查,没想到还是我的医生说了算,没想到又是她,就离谱,这周的状态也不怎么好,唯一能写点的就是关于Docker Compose的了,之前启docker都是直接用命令一个一个的启动,之后潘老师说用docker-compose,写好文件,一次就能启动多个。

docker-compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

安装

$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose -uname -s-uname -m > /usr/local/bin/docker-compose
# 下载 docker-compose 到 /usr/local/bin/docker-compose 中
$ sudo chmod +x /usr/local/bin/docker-compose 
# 给 docker-compose 执行权限
$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash\_completion.d/docker-compose 
# bash 自动补全

yaml文件

以下是一个yaml文件的模板,我们把要启动的程序的信息写进去,在执行命令时便会编译和启动

version: '3' # 定义版本,不指定默认为版本 1,新版本功能更多

services: # 容器,就像 docker run
   db: # 名称,它也是 network 中 DNS 名称
     image: mysql:5.7 # 镜像,如果像自定义镜像可以不指定这个参数,而用 build
     volumes: # 定义数据卷,类似 -v
       - db_data:/var/lib/mysql
       - .:/aaa # 挂载当前目录到容器中的 /aaa 无需使用绝对路径
     restart: always # 类似 --restart
     # 'no' 默认,不自动重启,以为 no 是 yaml 关键字所以加引号
     # always 总是自动重启
     # on-failure 当失败时自动重启,也就是 exit code 不为 0 时
     # unless-stopped 除非手动停止,否者一直重启
     environment: # 定义环境变量,类似 -e
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress: # 第二个容器
     labels:
       com.example.description: "This label will appear on all containers for the web service"
     # 为容器添加 Docker 元数据(metadata)信息。例如可以为容器添加辅助说明信息。
     depends_on: # 帮助 compose 理解容器之间的关系
     # db 将会在 wordpress 之前被启动
     # 关闭时 wordpress 将会在 db 之前关闭
     # 我们指定只启动 wordpress,db 也会跟着启动
       - db
     image: wordpress:latest
     ports: # 端口,类似 -p
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress

volumes: # 可选,需要创建的数据卷,类似 docker volume create
  db_data:

networks: # 可选,需要创建的网络,类似 docker network create

Dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
在项目目录里面新建Dockerfile文件,然后写入相关内容,具体操作见相关教程:Docker Dockerfile

启动

在项目目录执行命令:

docker-compose up -d

然后出现如下画面:
image.png
然后输入:

docker-compose ps

查看正在运行的docker-compose的各种状态。
image.png

在这里我是用的是mysql的环境,按照这篇教程写的:第一节 数据库初始化

总结

本以为明天就能重见光明,没想到明天是新的开始,这两天调整一下状态,下周开始好好工作,希望一切都会好的吧。

本文作者:河北工业大学梦云智开发团队 张文达


锦城
854 声望21 粉丝

好好生活