docker-compose 简单部署

docker-compose文件

  • 按照配置文件启动编排项目
yaml 复制代码
docker-compose -p appweb -f ./docker-compose.yml up -d

-p:项目名称
-f:指定docker-compose.yml文件路径
-d:后台启动
  • 关闭容器
xml 复制代码
docker-compose -p appweb -f ./docker-compose.yml down 

-p:项目名称(up的时候有的,down一定也要带上,不然找不到network)
-f:docker-compose.yml路径
down:停止容器,并删除容器

docker registry 私有仓库部署

好像网上都是linux平台安装指南,所以还是本地拉取个registry docker镜像,而且这个registry 没有GUI界面,只能用http互相操作,感觉用起来比较难受,最后还是在aliyun上用私有镜像仓库来使用 更方便。

而且registry删除镜像比较麻烦,参照文章解决

registry删除镜像的两种办法

xml 复制代码
#查看仓库里已有镜像
http://localhost:5000/v2/_catalog

#获取镜像信息 
curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -I -X GET http://127.0.0.1:5000/v2/[镜像名]/manifests/[tag版本]

mysql docker镜像初始化表结构

参照该文章解决
Docker容器启动时初始化Mysql数据库

大致解决思路就是 当Mysql容器首次启动时,会在 /docker-entrypoint-initdb.d目录下扫描 .sh,.sql,.sql.gz类型的文件。如果这些类型的文件存在,将执行它们来初始化一个数据库。这些文件会按照字母的顺序执行

所以制作mysql镜像时,将初始化脚本拷贝到 /docker-entrypoint-initdb.d即可

mysql 镜像的Dockerfile.yaml 样例如下,所以只需要 init_database.sql里写上自己的初始化语句

xml 复制代码
# 基础镜像
FROM mysql:8.0.40-debian
# author
MAINTAINER whp404

#定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d
 
#定义初始化sql文件
ENV INSTALL_DB_SQL init_database.sql
 
#把要执行的sql文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个sql
COPY ./$INSTALL_DB_SQL $AUTO_RUN_DIR/
 
#给执行文件增加可执行权限
RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DB_SQL

其中遇到一些小问题,就是初始化语句问题,反复修改了几次,发现mysql镜像启动后,新的 初始化语句没生效,大概原因是,mysql会检测 数据目录下(/data)是否有内容,如果检测到内容,容器就不会再次 执行初始化语句,所以可以将 对应目录删除,再拉起容器,就会重新执行初始化语句

mysql遇到初始化语句报错 Change limit for "Mysql Row size too large"

好像是表的压缩格式问题,参考添加链接描述

同时理解Dockerfile 中的Volume的概念,我的理解一般还是在compose文件里写 volume挂载比较统一
Dockerfile vs. docker-compose VOLUME

dockerfile does not build due to failed size validation

而且docker-compose启动遇到错,dockerfile does not build due to failed size validation,好像只要单独本地docker pull 对应的 镜像,再执行 docker-compose up 就不会报错了

dockerfile does not build due to failed size validation

最后附上我的docker-compose文件

xml 复制代码
version : '3'
services:
  rpsMysql:
    container_name: rpsMysql
    image: localhost:5000/mysql:1.0
    ports:
      - 3306:3306
    volumes:
      - ./db/my.cnf:/etc/mysql/my.cnf
      - ./db/logs:/logs
      - ./db/data:/var/lib/mysql
    command: [
          'mysqld',
          '--innodb-buffer-pool-size=80M',
          '--character-set-server=utf8mb4',
          '--collation-server=utf8mb4_unicode_ci',
          '--default-time-zone=+8:00',
          '--lower-case-table-names=1'
        ]
    environment:
      MYSQL_DATABASE: 'root' #数据库
      MYSQL_ROOT_PASSWORD: '######'  #数据库root用户密码


  nginx:
    container_name: nginx
    image: nginx:stable-alpine-slim
    ports:
      - 80:80
    volumes:
      - ./front/html/dist/:/usr/share/nginx/html/      
      - ./front/conf/nginx.conf:/etc/nginx/conf/nginx.conf

    
    depends_on:
      - bootstrap
    links:
      - bootstrap

  redis:
    container_name: redis
    image: redis:5.0
    ports:
      - 6379:6379
    volumes:
      - ./redis/redis.windows.conf:/opt/redis/redis.windows.conf  #对应工作目录上的conf文件路径和redis-dockefile挂载目录路径
      - ./redis/datadir:/data
      - ./redis/logs:/logs
    command: redis-server /opt/redis/redis.windows.conf

  bootstrap:
    container_name: bootstrap
    image: localhost:5000/bootstrap:1.0
    ports:
      - 8088:8088
    volumes:
      - ./App/rps/:/opt/rps/

    depends_on:
      - rpsMysql
      - redis
    links:
      - rpsMysql
      - redis 
    environment:
      - JIKONG_HOST=###
      - JIKONG_PORT=###
      - OSS_HOST=###
      - OSS_PORT=####
相关推荐
Acrellea2 小时前
告别粗放式能耗管理!安科瑞EIOT平台助力产业园区智慧低碳运营
运维·安全·能源
Databuff2 小时前
五款主流 SSH 免费工具介绍
运维·ssh·运维开发
菜鸟学编程o2 小时前
Linux常见指令
linux·运维·服务器
pt10433 小时前
AIOps机器学习——当警报阈值被调高之后
运维·人工智能·自动化
迪康coolmu3 小时前
企业文件外发管控落地实践 —— 基于迪康端点安全一体化管理系统
运维·网络·经验分享·安全
见闻小天地4 小时前
四方电气DL300变频器面向雕铣机多工况的技术参数与适配验证
运维·人工智能·业界资讯
千舟软件5 小时前
【宿舍管理小程序】新生入住不靠纸质表
大数据·运维·服务器·科技·业界资讯
程序员老赵5 小时前
Docker 部署 XXL-JOB:轻松搭建分布式任务调度平台
后端·docker·开源
j7~6 小时前
【Linux网络加餐课】(篇八)网络版计算器(终篇):守护进程、标准 IO 重定向与部署打包
linux·运维·网络编程·tcp·守护进程·io重定向·部署打包
迹_start6 小时前
Docker
docker