<ul class="nav nav-tabs " role="tablist">
<li role="presentation" id="tasks" class="">
<a href="/my/course/5">
目录
</a>
</li>
<li role="presentation" id="threads" class="active">
<a href="/my/course/5/threads">
话题
<small>(191)</small>
</a>
</li>
<li role="presentation" id="notes" class="">
<a href="/my/course/5/notes">
笔记
<small>(137)</small>
</a>
</li>
<li role="presentation" id="material" class="">
<a href="/my/course/5/material">
资料区
<small>(2)</small>
</a>
</li>
<li role="presentation" id="reviews" class="">
<a href="/my/course/5/reviews">
评价
<small>(33)</small>
</a>
</li>
<li role="presentation" id="summary" class="">
<a href="/my/course/5/summary">
介绍
</a>
</li>
<li class="highlight" style="left: 92px; width: 128px; overflow: hidden;"></li></ul> </div>

  <h2 class="thread-title">
win10专业版Hyper-v下Docker挂载volume的方式使用Gitlab(汉化版)保存资料数据(使用外部redis)
</h2>
<div class="thread-metas">
By <a class="link-dark link-primary" href="/user/320">五行缺猫</a> <span class="bullet mhs">•</span>
2018-02-21
<span class="bullet mhs">•</span>
917次浏览 </div>
</div>
<div class="thread-body"><p>因为我打算使用公用的redis,所以先创建一个redis镜像</p>

首先创建一个docker目录(以下以G盘为例)

在docker目录下创建redis目录

在redis目录下添加文件docker-compose.yml文件,内容为:

(2018年4月11日修改volumes下面的挂载volume不使用/g/docker/redis/xxx方式,在最新版docker中已不能使用,改为docker-compose.yml的相对路径./redis/conf来挂载)

version: '3'
services:
redis:
image: redis:4.0.8-alpine
container_name: db-redis
restart: always
ports:
- 6379:6379
networks:
- net_db
volumes:
- ./redis/config:/docker/config
- ./redis/data:/data
command: redis-server /docker/config/redis.conf
networks:
net_db:
external: true

在redis目录下添加config目录

在config目录下添加redis.conf文件,内容为:

#redis的databases数量
databases 32
#redis密码
requirepass 123

回到redis目录,打开vscode、powershell或者cmd

首先创建一个network,然后执行docker-compose -d up

PS G:\docker\redis> docker network create net_db
0583088e9269e9d1e7029682f409690547ae9325b0aee795b3d76676b7409abc
PS G:\docker\redis> docker-compose up -d
Creating db-redis ... done
PS G:\docker\redis> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b0b552dc45fa redis:4.0.8-alpine "docker-entrypoint.s…" 38 seconds ago Up 35 seconds 0.0.0.0:6379->6379/tcp db-redis

启动成功,用客户端连接测试localhost:6379@123(密码)连接正常

接下来开始启动Gitlab

在docker目录下创建gitlab目录

在其中创建docker-compose.yml文件,内容为:

version: '3'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh:10.4.3'
container_name: gitlab-1043
restart: unless-stopped
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab-1043'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
#以下为启用邮件相关设置,我用的是阿里云免费企业邮箱
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.mxhichina.com'
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = '我的阿里云企业邮箱账号'
gitlab_rails['smtp_password'] = '我的阿里云企业邮箱密码'
gitlab_rails['smtp_domain'] = '我的阿里云企业邮箱域名'
gitlab_rails['smtp_authentication'] = 'plain'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '收到邮件时显示的发送邮箱'
user["git_user_email"] = '用户邮箱地址,跟上一条一样'
#修改sidekiq的数量,减少内存占用,默认为15,也可以不填
sidekiq['concurrency'] = 10
#使用外部redis所需设置,根据刚刚生成的redis设置修改
gitlab_rails['redis_port'] = 6379
gitlab_rails['redis_host'] = 'db-redis'
gitlab_rails['redis_password'] = '123'
gitlab_rails['redis_database'] = '1'
#因为22端口被占用,修改映射的端口号时,同时修改在Gitlab项目中的ssh地址加上端口号
gitlab_rails['gitlab_shell_ssh_port'] = 10022
ports:
- '10080:80'
- '10443:443'
- '10022:22'
networks:
- net_db
volumes:
- ./config:/etc/gitlab
- gitlab-data:/var/opt/gitlab
- ./logs:/var/log/gitlab
volumes:
gitlab-data:
external: true
networks:
net_db:
external: true

在Docker内部创建一个volume,然后执行docker-compose -d up

PS G:\docker\gitlab> docker volume create gitlab-data
gitlab-data
PS G:\docker\gitlab> docker-compose up -d
Creating gitlab-1043 ... done
PS G:\docker\gitlab> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
c7cba6a06740 twang2218/gitlab-ce-zh:10.4.3 "/assets/wrapper" 29 seconds ago Up 24 seconds (health: starting) 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp, 0.0.0.0:10443->443/tcp gitlab-1043
b0b552dc45fa redis:4.0.8-alpine "docker-entrypoint.s…" 14 minutes ago Up 14 minutes 0.0.0.0:6379->6379/tcp
db-redis

等待Gitlab自己生成配置完成以后,就可以访问http://localhost:10080访问gitlab了

可以在等待时输入docker logs -f gitlab-1043跟踪gitlab的生成状态

如果需要备份出来gitlab-data的数据,可以创建一个临时的镜像方式把文件copy出来

PS G:\docker> docker run --name data -v /g/docker/backup:/backup -v gitlab-data:/data ubuntu:17.10 cp -r /data/ /backup/
cp: cannot create special file '/backup/data/postgresql/.s.PGSQL.5432': Operation not permitted
cp: cannot create special file '/backup/data/redis/redis.socket': Operation not permitted
cp: cannot create special file '/backup/data/gitlab-rails/sockets/gitlab.socket': Operation not permitted
cp: cannot create special file '/backup/data/gitlab-workhorse/socket': Operation not permitted
cp: cannot create special file '/backup/data/gitaly/gitaly.socket': Operation not permitted
PS G:\docker> docker rm data
data

上面这几个无法copy的文件就是导致不能使用volume直接挂载在windows目录下的原因,其他文件都可以正常备份和修改

  </div>
<h3 class="thread-posts-heading">
<span class="glyphicon glyphicon-share-alt"></span>
<span id="thread-post-num">8</span> 回复 </h3> <ul class="thread-post-list media-list">
<li id="post-155" name="post-155" class="thread-post media clearfix">
<a class="pull-left media-object js-user-card" href="/user/320" data-card-url="/user/320/card/show" data-user-id="320">
<img class="avatar-sm" src="/files/user/2017/11-19/18571178ed01393852.jpg">

五行缺猫

2018-02-21

mysql也可以用同样的方式挂载在Docker的volume中

先创建一个mysql-data volume

PS G:\docker> docker volume create mysql-data
mysql-data

然后创建一个mysql

(2018年4月11日修改volumes挂载方式/g/docker/mysql/xxxx为./mysql/xxx的方式,因最新版docker已不支持/g/的绝对路径表达方式,改为./的相对路径【以docker-compose.yml的相对路径】)

version: '3'
services:
db:
image: mysql/mysql-server:5.7.21
container_name: db-mysql
restart: always
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
ports:
- 3306:3306
networks:
- net_db
environment:
MYSQL_ROOT_PASSWORD: pwd123456
volumes:
- ./mysql/mysql-init:/docker-entrypoint-initdb.d
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
external: true
networks:
net_db:
external: true

同样只要不手动删除mysql-data这个volume,数据就不会丢失

  • 五行缺猫

    2018-02-21

    发布到正式的CentOS时,只需要把最下面的volumes内容去掉,services里的volumes改为CentOS下的路径就可以了

  • 五行缺猫

    2018-02-21

    发送邮件使用465是因为现在的云服务商都屏蔽了25端口,申请开放太麻烦,所以专用465端口发送邮件

  • crashsol

    2018-02-21

  • 五行缺猫

    2018-02-28

    gitlab的汉化镜像更新到10.5.1了,只需要把docker-compose.yml中的twang2218/gitlab-ce-zh:10.4.3改为twang2218/gitlab-ce-zh:10.5.1,container_name: gitlab-1043也可以修改为container_name: gitlab-1051(改不改没事不影响正常使用,就是方便区分版本)

    然后重新执行一遍docker-compose up -d就会自动升级到10.5.1版本了,需要重新执行一遍配置流程,过程长短看机器性能而定,可以通过docker logs -f --tail 20 gitlab-1051(没改过名字就还是gitlab-1043)监控配置是否完成,并且之前Gitlab中的数据不会丢失。

  • franjojo

    2018-04-23

  • franjojo

    2018-04-23

    写配置文件和yml的时候,一定要注意编码格式,选utf-8 无bom格式

  • 四个石头

    2018-05-30

  •       <h3 class="thread-posts-heading"><span class="glyphicon glyphicon-plus"></span> 添加回复</h3>
    <form id="thread-post-form" class="form-vertical" method="post" action="/course/5/thread/100/post" data-auto-submit="false" novalidate="novalidate">

    添加回复

        </section>
    posted @
    2019-08-13 12:56 
    kennard_owen 
    阅读(...) 
    评论(...) 
    编辑 
    收藏

    win10专业版Hyper-v下Docker挂载volume的方式使用Gitlab(汉化版)保存资料数据(使用外部redis)的更多相关文章

    1. docker挂载volume的用户权限问题,理解docker容器的uid

      docker挂载volume的用户权限问题,理解docker容器的uid 在刚开始使用docker volume挂载数据卷的时候,经常出现没有权限的问题. 这里通过遇到的问题来理解docker容器用户 ...

    2. 安装sublime text3 、转化为汉化版、安装SublimeREPL使得在交互条件下运行代码,设置快捷键

      一.sublime Sublime Text 3是轻量级的,安装包很小,它的大部分功能是依靠丰富的插件实现的,而且占用资源少.目前主流版本是Sublime Text3,在官网就可以下载,http:// ...

    3. win10+anaconda环境下pyqt5+qt tools+eric6.18安装及汉化过程

      最近需要用python编写一个小程序的界面,选择了pyqt5+eric6的配套组合,安装过程中遇到一些坑,特此记录.参考书籍是电子工业出版社的<PyQt5快速开发与实战>. 因为我使用an ...

    4. Docker 运行ELK日志监测系统,汉化Kibana界面

      1.ELK日志监控简介 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...

    5. centos6.5下Zabbix系列之Zabbix安装搭建及汉化

      最近在研究zabbix,在整理完成之后就有了写一下总结博客的想法,在我研究zabbix的时候给我很大帮助的是it你好,博客地址http://itnihao.blog.51cto.com/他做的zabb ...

    6. centos6.5下Zabbix系列之Zabbix安装搭建及汉化 (转)

      最近在研究zabbix,在整理完成之后就有了写一下总结博客的想法,在我研究zabbix的时候给我很大帮助的是it你好,博客地址 http://itnihao.blog.51cto.com/他做的zab ...

    7. (转)centos6.5下Zabbix系列之Zabbix安装搭建及汉化

      最近在研究zabbix,在整理完成之后就有了写一下总结博客的想法,在我研究zabbix的时候给我很大帮助的是it你好,博客地址 http://itnihao.blog.51cto.com/他做的zab ...

    8. ubuntu下vim及man帮助文档的汉化

      vim是一个功能超级强大的编辑器,当然我们也可将它配置超强的IDE.这类教程网上非常多,我就不再此赘述了. 我们在使用中对不熟悉的命令,不熟悉的插件的使用方法常常须要查看文档,全英文环境确实看着人头都 ...

    9. 多个docker 挂载VOLUME的心得

      假如有一个mysql镜像 在Dockerfile中制定VOLUME /var/lib/mysql 那么当执行: docker run -d -e MYSQL_ROOT_PASSWORD=root -- ...

    随机推荐

    1. Java 8 Date常用工具类

      原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11983108.html Demo package org.fool.util; import java ...

    2. k-means原理和python代码实现

      k-means:是无监督的分类算法 k代表要分的类数,即要将数据聚为k类; means是均值,代表着聚类中心的迭代策略. k-means算法思想: (1)随机选取k个聚类中心(一般在样本集中选取,也可 ...

    3. 【转载】MIMO技术杂谈(一):鱼与熊掌能否兼得?--浅谈分集与复用的权衡

      原文链接(向作者致敬):http://www.txrjy.com/thread-667901-1-1.html   无线通信世界在过去的几十年中的发展简直是爆发式的,MIMO(多发多收)技术的出现更是 ...

    4. postman—UI测试

      思路 发送请求去拿到网站的响应->html 解析HTML标签,判断一些元素是否显示 目的 快速检查UI是否正确 测试地址 http://www.itest.info/courses 我们接下来要 ...

    5. 千呼万唤始出来——DataV私有部署功能

      DataV的开发者们,今天进入你的用户中心,就会发现有一个小惊喜默默的在等待着你.那就是——私有部署功能上线啦! 一直以来私有部署都是一些有需要的小伙伴所望尘莫及的,毕竟高贵的身份摆在那里,现在不用再 ...

    6. 浙大PAT CCCC L3-015 球队“食物链” ( 搜索 && 剪枝 )

      题目链接 题意 : 有 n 个球队,给出主客场胜负图,找出一个序列 1.2.3..... 使得 1 战胜过 2 .2 战胜过 3.3 战胜过 4..... n 战胜过 1 ( 这个序列是 1~n 的其 ...

    7. SpringBoot属性配置-第三章

      1.application.yml配置#自定义参数对象book: name: A id: 1 page: 100 2.创建实体类: /** * @Auther: youqc * @Date: 2018 ...

    8. 个推安卓推送SDK集成步骤详解

      以下是一位开发者在集成个推安卓推送SDK时候的亲身经历: 作者:吃饱了想睡. 概述 公司准备采用个推作为第三方推送平台,我作为客户端的头号小鸟,掐指一算已经毕业 0.1 年了,Leader 准备把这个 ...

    9. Model 层

      package com.test.mvp.mvpdemo.mvp.v1.model; import com.test.mvp.mvpdemo.mvp.v1.MainContract; import o ...

    10. Java 中冒泡排序

      package com.nf147.test; public class sort { public static void main(String[] args) { int arr[] = {11 ...