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=####
相关推荐
Xi_er_3 小时前
密钥管理系统在数据安全解决方案中的重要性
运维·数据仓库·物联网·web安全·前端框架·智慧城市·安全架构
练小杰3 小时前
我在广州学 Mysql 系列——有关数据表的插入、更新与删除相关练习
android·运维·数据库·经验分享·学习·mysql·adb
hqxnb6665 小时前
深入理解 Linux 管道:创建与应用详解(匿名管道&&进程池)
linux·运维·服务器
vvw&5 小时前
如何在 Ubuntu 24.04 上安装 Drupal CMS 11 并配置 Nginx, MariaDB 和 SSL 教程
linux·运维·服务器·nginx·ubuntu·ssl·mariadb
未完成的歌~5 小时前
Kali 离线安装 ipmitool 笔记
linux·运维·笔记
boy快快长大6 小时前
通过Dockerfile来实现项目可以指定读取不同环境的yml包
docker
会飞的土拨鼠呀6 小时前
docker system df命令
运维·docker·容器
vvw&6 小时前
在 Ubuntu 22.04 上部署 AppArmor 应用安全教程
linux·运维·服务器·nginx·安全·ubuntu·node.js
qq13267029406 小时前
GitLab创建用户,设置访问SSH Key
linux·运维·服务器·gitlab·gitlab创建用户·设置ssh key
xxxx1234458 小时前
Linux-Ubuntu之RGBLCD显示屏
linux·运维·c语言·ubuntu