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

相关推荐
咚咚?4 小时前
基于gitlab 构建CICD发布到K8S 平台
容器·kubernetes·gitlab
尘土哥7 小时前
Docker 快速上手
docker·容器·eureka
广州山泉婚姻8 小时前
Docker从环境配置到应用上云的极简路径
docker
胡耀超12 小时前
Umi-OCR 的 Docker安装(win制作镜像,Linux(Ubuntu Server 22.04)离线部署)
linux·深度学习·ubuntu·docker·容器·nlp·ocr
铃木隼.16 小时前
docker容器高级管理-dockerfile创建镜像
运维·docker·容器
容器魔方17 小时前
持续领跑,华为云连续5年蝉联中国容器软件市场份额第一
云原生·容器·云计算
开开心心就好19 小时前
AI抠图软件,本地运行超快速
网络·人工智能·网络协议·tcp/ip·docker·电脑·excel
IT成长日记1 天前
【Docker基础】Dockerfile指令速览:文件与目录操作指令详解
docker·容器·volume·add·dockerfile·workdir
胡耀超1 天前
GraphRAG Docker化部署,接入本地Ollama完整技术指南:从零基础到生产部署的系统性知识体系
运维·docker·容器·大模型·知识图谱·rag·ollama
小趴菜吖1 天前
更换docker工作目录
docker