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

相关推荐
tb_first1 小时前
k8sday09
linux·云原生·容器·kubernetes
天上掉下来个程小白3 小时前
Docker-14.项目部署-DockerCompose
运维·docker·微服务·容器
星霜笔记7 小时前
Docker 部署 MariaDB+phpMyAdmin+Nextcloud 完整教程
运维·数据库·docker·容器·mariadb
数据知道9 小时前
容器化部署:用Docker封装机器翻译模型与服务详解
docker·容器·机器翻译
40kuai16 小时前
kubernetes中数据存储etcd
容器·kubernetes·etcd
敲上瘾16 小时前
Linux系统cgroups资源精细化控制基础
linux·测试工具·docker·压力测试·cgroups
Harvey_D17 小时前
【部署K8S集群】 1、安装前环境准备配置
云原生·容器·kubernetes
伊成18 小时前
Docker 部署 Nginx 完整指南
nginx·docker·容器
落日漫游19 小时前
K8s核心组件全解析
运维·docker·运维开发
江湖有缘1 天前
【Docker项目实战】使用Docker部署Notepad轻量级记事本
docker·容器·notepad++