DockerCompose介绍

Docker Compose 通过一个单独的 `docker-compose.yml` 模板文件(YAML 格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。

命令行直接创建容器和通过`docker-compose.yml`文件创建容器的区别:

docker-compose.yml文件示例:

services:

#MySQL容器配置
  mysql:
    image: mysql:8                      #镜像名
    container_name: mysql								#容器名
    ports:															#端口映射
      - "3307:3306"											#宿主机端口:容器端口
    environment:												#配置环境变量
      TZ: Asia/Shanghai									#时区
      MYSQL_ROOT_PASSWORD: 123					#MySQL初始用户名和密码
    volumes:														#本地目录挂载
      - "/usr/local/app/mysql/conf:/etc/mysql/conf.d"
      - "/usr/local/app/mysql/data:/var/lib/mysql"
      - "/usr/local/app/mysql/init:/docker-entrypoint-initdb.d"
    networks:														#网络配置
      - tlias-net
      
#app容器配置
  tlias:
    build: 														#创建镜像
      context: .											#dockerfile文件地址 .(代表当前目录下)
      dockerfile: Dockerfile					#文件名
    container_name: tlias-server			#容器名
    ports:
      - "8080:8080"
    networks:
      - tlias-net
    depends_on:												#依赖的容器
      - mysql
      
#nginx容器配置
  nginx:
    image: nginx:1.20.2
    container_name: nginx-tlias
    ports:
      - "80:80"
    volumes:
      - "/usr/local/app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
      - "/usr/local/app/nginx/html:/usr/share/nginx/html"
    depends_on:
      - tlias
    networks:
      - tlias-net
  #网络配置,多个容器配置同一个网络时,可以不用写IP地址,直接使用容器名代替
networks:
  tlias-net:
    name: itheima

DockerCompose命令

#使用 DockerCompose 部署一个项目实例

#1.创建一个目录,并在该目录下上传所需要的文件
[root@localhost ~]# cd /usr/local
[root@localhost local]# mkdir app
[root@localhost local]# cd app
[root@localhost app]# ll
总用量 0
[root@localhost app]# ll
总用量 213728
-rw-r--r--. 1 root root       948 12月 20 13:30 docker-compose.yml
-rw-r--r--. 1 root root       705 12月 20 13:30 Dockerfile
-rw-r--r--. 1 root root 182487685 12月 20 13:30 jdk17.tar.gz
drwxr-xr-x. 5 root root        42 12月 20 13:30 mysql
drwxr-xr-x. 4 root root        30 12月 20 13:30 nginx
-rw-r--r--. 1 root root  36357463 12月 20 13:30 tlias.jar

#2.通过 DockerCompose命令 启动所有项目构建的容器
[root@localhost app]# docker compose up -d									#启动命令(后台运行)
[+] up 20/20
 ✔ Image mysql:8 Pulled                                                                                                                     91.4s
 ✔ Image nginx:1.20.2 Pulled                                                                                                                59.7s
[+] Building 14.9s (13/13) FINISHED
 => [internal] load local bake definitions                                                                                                   0.0s
 => => reading from stdin 468B                                                                                                               0.0s
 => [internal] load build definition from Dockerfile                                                                                         0.0s
 => => transferring dockerfile: 797B                                                                                                         0.0s
 => [internal] load metadata for docker.io/library/centos:7                                                                                  0.2s
 => [internal] load .dockerignore                                                                                                            0.0s
 => => transferring context: 2B                                                                                                              0.0s
 => CACHED [1/6] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4                     0.0s
 => => resolve docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4                            0.0s
 => [internal] load build context                                                                                                            1.2s
 => => transferring context: 218.89MB                                                                                                        1.2s
 => [2/6] COPY jdk17.tar.gz /usr/local/                                                                                                      0.4s
 => [3/6] RUN tar -xzf /usr/local/jdk17.tar.gz -C /usr/local/ &&  rm /usr/local/jdk17.tar.gz                                                 2.1s
 => [4/6] RUN mkdir -p /tlias                                                                                                                0.2s
 => [5/6] WORKDIR /tlias                                                                                                                     0.0s
 => [6/6] COPY  tlias.jar  tlias.jar                                                                                                         0.1s
 => exporting to image                                                                                                                      10.5s
 => => exporting layers                                                                                                                      8.1s
 => => exporting manifest sha256:23e0efa63faa3506eac511d17fcdabbfb6563c034dfbaac7a298e1eb167d767c                                            0.0s
 => => exporting config sha256:2f11b2ee399b4af3f1901e51d17bdda86129ebb21ffacfb889701640604e5509                                              0.0s
 => => exporting attestation manifest sha256:680a387d7a4d68ad75a575cf9f74231ae3c68e15de95bb563ae9ca8fca015771                                0.0s
 => => exporting manifest list sha256:2f541502ccf18314a1964c06b51f6f8ba96ebd377024438f099f025c90b711c9                                       0.0s
[+] up 25/25g to docker.io/library/app-tlias:latest                                                                                          0.0s
 ✔ Image mysql:8          Pulled                                                                                                            91.4s
 ✔ Image nginx:1.20.2     Pulled                                                                                                            59.7s
 ✔ Image app-tlias        Built                                                                                                             14.9s
 ✔ Network itheima        Created                                                                                                            0.0s
 ✔ Container mysql        Created                                                                                                            0.2s
 ✔ Container tlias-server Created                                                                                                            0.0s
 ✔ Container nginx-tlias  Created                                                                                                            0.0s

#3.查询容器是否运行
[root@localhost app]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                                    NAMES
b91165d6e75c   nginx:1.20.2   "/docker-entrypoint.…"   12 minutes ago   Up 12 minutes   0.0.0.0:80->80/tcp, [::]:80->80/tcp                      nginx-tlias
d068c9fcae21   app-tlias      "java -jar /tlias/tl…"   12 minutes ago   Up 12 minutes   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp              tlias-server
e7333b623f16   mysql:8        "docker-entrypoint.s…"   12 minutes ago   Up 12 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp, [::]:3307->3306/tcp   mysql

#4.查看网络配置是否成功
[root@localhost app]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
075051af942e   bridge    bridge    local
ce0324e01c7a   host      host      local
573fb9c4e172   itheima   bridge    local
e4e9873d6d9a   none      null      local

#5.通过 DockerCompose命令 移除所有项目构建的容器
[root@localhost app]# docker compose down
[+] down 3/4
 ✔ Container nginx-tlias  Removed                                                                                                            0.1s
 ✔ Container tlias-server Removed                                                                                                            0.2s
 ✔ Container mysql        Removed                                                           
                                                 1.5s
 ⠋ Network itheima        Removing                                                                                                           0.0s

DockerCompose语雀笔记连接https://www.yuque.com/xiaomifengsenlin/wqsrs9/eu930hcsvnswkepw

更多推荐