docker-compose手册

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。

前言

一些自己经常用到的docker-compose知识。

一、运行和启动项目

1.1、docker-compose运行容器

-d表示在后台运行

shell 复制代码
docker-compose -f 文件名.yml up -d

1.2、docker-compose停止容器

shell 复制代码
docker-compose -f 文件名.yml stop

二、各字段用法

2.1、restart字段

用于指定容器的重启策略

  • no: 表示容器不会自动重启。如果容器退出,它将保持停止状态。

  • always: 表示容器将始终自动重启,无论退出原因是什么。

  • on-failure: 表示容器仅在退出状态码非零(即失败)时才自动重启。\

  • unless-stopped: 表示容器将自动重启,除非手动停止了容器。这是一个常见的选项,用于确保容器总是在它不是故意停止的情况下运行。

2.2、command字段

指定容器启动后要运行的命令,会覆盖镜像默认的命令,可以设置一个sh或者其他的脚本文件。

shell 复制代码
command: ["./myscript.sh"]

三、具体应用

一个项目镜像搭配着Mysql容器

给个例子,这个例子是一个Go项目,Go项目用镜像构建,并且使用了Mysql的容器。

yaml 复制代码
version: '3'
services:
  go-app:
    image: xjintong/douyin:latest
    restart: unless-stopped
    volumes:
      - ./src:/go/src
    working_dir: /go/src             # 设置容器的工作目录为 /go/src 容器启动后的默认目录
    ports:
      - "8080:8080"
    tty: true                        # 可以在容器中执行交互式命令
    environment:
      MYSQL_HOST: "mysql"            # 连接下面的mysql服务,如果下面服务名换了,这也得换
      MYSQL_DATABASE: "bytedance"    # 数据库名称
      MYSQL_USER: "bytedance"        # 数据库用户名
      MYSQL_PASSWORD: "bytedance"    # 数据库密码
    depends_on:
      - mysql
    
  mysql:
    image: mysql:latest
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: "bytedance"       # 数据库名称
      MYSQL_USER: "bytedance"           # 数据库用户名
      MYSQL_PASSWORD: "bytedance"       # 数据库密码
      MYSQL_ROOT_PASSWORD: "bytedance"  # 数据库根密码
    ports:
      - "3306:3306"                     # 将宿主机的3306端口映射到容器的3306端口,方便调试。
    volumes:
      - ./mysql:/var/lib/mysql

不过要注意两点。

第一点: 首先就是在项目中填写的数据库的ip,不要填本地回环地址(127.0.0.2),要填MySql的容器ip。

MySql容器ip可通过下列命令查看,将代码中的mysql-container-id换成你容器的id。

shell 复制代码
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-container-id

第二点: 用Navicat Premium调试的时候,如果项目部署在本地的话,软件中的主机地址填localhost;如果部署在服务器的话,主机地址就填服务器ip就行了。

相关推荐
m0_741768854 小时前
使用docker的小例子
运维·docker·容器
最新小梦7 小时前
Docker日志管理
运维·docker·容器
ZHOU西口8 小时前
微服务实战系列之玩转Docker(十五)
nginx·docker·微服务·云原生·swarm·docker swarm·dockerui
lgbisha9 小时前
828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
低代码·docker·华为云
记得开心一点嘛9 小时前
在Linux系统上使用Docker部署javaweb项目
linux·运维·docker
Persistence is gold11 小时前
cassandra指定配置文件的docker启动方法
运维·docker·容器
C语言扫地僧12 小时前
Docker 镜像制作(Dockerfile)
linux·服务器·docker·容器
ken_coding16 小时前
Windows11 WSL2的ubuntu 22.04中拉取镜像报错
linux·ubuntu·docker
Richardlygo16 小时前
(k8s)Kubernetes部署Promehteus
云原生·容器·kubernetes
炸裂狸花猫17 小时前
Kubernetes从零到精通(12-Ingress、Gateway API)
容器·kubernetes·gateway