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=####
相关推荐
极简网络科技15 分钟前
Docker、Wsl 打包迁移环境
运维·docker·容器
黑客老李19 分钟前
JavaSec | SpringAOP 链学习分析
java·运维·服务器·开发语言·学习·apache·memcached
杨浦老苏20 分钟前
轻量级Docker管理工具Docker Switchboard
运维·docker·群晖
江湖有缘23 分钟前
【Docker管理工具】部署Docker可视化管理面板Dpanel
运维·docker·容器
一加一等于二35 分钟前
docker部署postgresql17,并且安装插件
docker·postgresql
RussellFans1 小时前
Linux 文本三剑客(grep, awk, sed)
linux·运维·服务器
猴哥聊项目管理2 小时前
什么是DevOps智能平台的核心功能?
运维·项目管理·制造·devops·软件·项目管理软件·软件分享
Chuncheng's blog2 小时前
CentOS 7如何编译安装升级gcc至7.5版本?
linux·运维·c++·centos
猫咪老师19952 小时前
多系统一键打包docker compose下所有镜像并且使用
java·docker·容器
aitav02 小时前
⚡️ Linux Docker 基本命令参数详解
linux·运维·docker