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就行了。

相关推荐
roman_日积跬步-终至千里21 小时前
【Docker】Docker Stop 后到底发生了什么?——从信号机制到优雅停机
运维·docker·容器
z***6261 天前
Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像
docker·容器·tomcat
Connie14511 天前
记一次K8s故障告警排查(Grafna告警排查)
云原生·容器·kubernetes·grafana
❀͜͡傀儡师1 天前
Docker部署视频下载器
docker·容器·音视频
热爱学习的小怪兽1 天前
docker的一些常用指令
运维·docker·容器
w***76551 天前
用docker启动mysql步骤
mysql·docker·容器
p***q781 天前
docker离线安装及部署各类中间件(x86系统架构)
docker·中间件·系统架构
d***95621 天前
docker 安装 mysql
mysql·adb·docker
陌生人~1 天前
docker安装redis
redis·docker
qq_2153978971 天前
docker 安装 opengauss 高斯数据库
运维·docker·容器