DockerCompose学习笔记
·
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
更多推荐

所有评论(0)