Docker Compose配置文件
本文最后更新于 181 天前,如有失效请评论区留言。

简介

docker compose 是用于定义和运行多容器 Docker 应用程序的工具。借助 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,只需一个命令,即可从配置中创建并启动所有服务。 docker compose是Compose V2的语法,Compose V1是docker-compose,配置是写在一个名为 compose.yaml 的文件中(也可以是docker-compose.yml,这里用的官网的文件命名)。

配置详细描述

简单的案例

version: '3.0'

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '10000:81' # 可修改
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

version 只是一个版本的显示,可以不用写

image 要使用的Docker镜像如果不加:latest默认为最新,但是一般情况下在你长时间使用一个版本的情况下最好把这个固定成一个版本,这样更稳定

restart 这指定了容器的重新启动策略。unless-stopped 表示除非手动停止容器,否则发生故障时会自动重新启动。选项:

  1. no 表示容器不会自动重新启动,无论什么原因导致容器停止。
  2. always 表示容器会在停止时自动重新启动,除非手动停止容器。
  3. unless-stopped 类似于 always,容器会在停止时自动重新启动,但如果手动停止容器,它将不会自动重新启动。
  4. on-failure 容器会在非零退出代码的情况下自动重新启动。可以使用 restart: on-failure:5 来指定最大尝试重新启动的次数。

ports 通过这些端口可以从主机访问容器内的服务

volumes 允许容器访问主机上的特定目录或文件,并在容器之间共享数据。一般都会安装默认配置,后面备份和移植都可以直接把这目录下的所有映射文件复制过去,再重新运行下docker compose就可以很方便的迁移了

一般情况下我们只需要去修改- '10000:81'这段,也就是到时候用什么ip:端口去访问这个应用,80和443端口是因为nginx-proxy-manager需要通过使用HTTP(端口80)和HTTPS(端口443)来提供服务,这个不用管,一般需要访问的管理页面 端口才需要修改成自己常用的端口,注意:避开已经使用的端口,可以使用

netstat -t4lpn

查看ipv4的tcp端口,:后面的就是端口号,避免是下面这些(6010、10001、8000、53、22)端口就行

image-20231129004713926

稍微复杂的案例

services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: KgUDx*4eeUJ6u82!prX^  #修改
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: JC8JBFiPQ&F&bvC%haY3 #修改 需要和WORDPRESS_DB_PASSWORD保持一致
    volumes:
      - './db:/var/lib/mysql'

  app:
    image: wordpress:latest
    restart: always
    ports:
      - 30104:80  #可修改
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: JC8JBFiPQ&F&bvC%haY3 #修改
    volumes:
      - './app:/var/www/html'
    depends_on:
      - redis

  redis:
    image: redis:alpine
    restart: always
    volumes:
      - ./redis-data:/data
修改后配置
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: KgUDx*4eeUJ6u82!prX^  #修改
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: JC8JBFiPQ&F&bvC%haY3 #修改 需要和WORDPRESS_DB_PASSWORD保持一致
    volumes:
      - './db:/var/lib/mysql'
    networks:
      - default

  app:
    image: wordpress:latest
    restart: always
    ports:
      - 30104:80 #可修改
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: JC8JBFiPQ&F&bvC%haY3 #修改
    volumes:
      - './app:/var/www/html'
    networks:
      - default
    depends_on:
      redis:
        condition: service_started
        required: true

  redis:
    image: redis:alpine
    restart: always
    volumes:
      - ./redis-data:/data

这个配置中 services 服务由 db、app、redis 组成,这些是服务的名称标识,可以修改,目的只是让你更清晰的了解这块是干嘛的

environment 设置容器内部环境变量,这里是配置mysql的root密码、数据库名称、用户名、密码

depends_on 配置服务之间的启动顺序依赖,redis必须在wordpress之前运行

当然配置还有很多,比如使用 dockerfile 构建、Network、dns、configs等。但这里我们只将经常使用的,能让小白快速上手,先大体了解,具体的可以使用翻译查看官方文档https://docs.docker.com/compose/compose-file/

docker compose常用命令

创建和启动容器,并以后台模式运行

docker compose up -d

停止容器并删除创建的容器、网络、卷和映像

docker compose down

实时显示日志的变化

docker compose logs -f

拉取最新的镜像

docker compose pull

清理系统中不再使用的Docker镜像

docker image prune

docker compose 更新

docker compose down
docker compose pull
docker compose up -d

docker compose转换

https://www.composerize.com/
使用这个工具可以快速把那些教程上只有docker run xxx 配置的转换成compose.yml文件

版权声明:本文为BIMiracle原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇