Centos7基于docker搭建gitlab mysql tomcat

news2024/7/6 21:08:18

STEP1 搭建gitlab

$ sudo yum install docker-ce
$ sudo systemctl start docker

搜索Gitlab镜像 并拉取

$ docker search gitlab
$ docker pull  beginor/gitlab-ce:11.0.1-ce.0 //选择自己要安装的版本

在服务器本地创建需要映射的文件 etc(配置) data(数据) log(日志 便于后期的维护,然后启动gitlab镜像

mkdir -p /mnt/gitlab/etc
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
//运行
docker run \
    --detach \
    --publish 8443:443 \  # 将容器内443端口映射到主机8443,提供https服务
    --publish 8088:80 \# 将容器内80端口映射到主机8010,提供http服务
    --publish 10022:22 \           # 将容器内22端口映射到主机1002,提供ssh服务
    --name gitlab-test \# 指定容器名称
    --restart unless-stopped \ # 容器运行中退出时(不是手动退出),自动重启
    -v /mnt/gitlab/etc:/etc/gitlab \# 将本地/mnt/gitlab/etc挂载到容器内/etc/gitlab
    -v /mnt/gitlab/log:/var/log/gitlab \# 将本地/mnt/gitlab/log挂载到容器内/var/log/gitlab
    -v /mnt/gitlab/data:/var/opt/gitlab \# 将本地/mnt/gitlab/data挂载到容器内/var/opt/gitlab
      beginor/gitlab-ce:11.0.1-ce.0     # 镜像名称:版本

修改gitlab配置 /mnt/gitlab/etc/gitlab.rb external_url 'http://192.168.200.133' 修改为自己的IP

修改/mnt/gitlab/data/gitlab-rails/etc/gitlab.yml

将这里的host ssh_host修改为宿主机的ip地址

修改之后重启gitlab容器就可以访问了 如果出现502 可能是内存太小

STEP2 搭建mysql

docker pull mysql:5.7
docker run -d -p 3306:3306 --name mysql \-v /mysqldata/mysql/log:/var/log/mysql \-v /mysqldata/mysql/data:/var/lib/mysql \-v /mysqldata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root mysql:5.7

上述命令的含义:

  • docker run :在docker中启动一个容器实例

  • -d :该容器在后台运行

  • -p 3306:3306 :主机端口:容器端口

  • --name mysql :容器运行后的名称

  • -v /mnt/mysql/log:/var/log/mysql :将容器/var/log/mysql目录下的数据,备份到主机的/mnt/mysql/log目录下;

  • -v /mnt/mysql/data:/var/lib/mysql :将容器/var/lib/mysql目录下的数据,备份到主机的/mnt/mysql/data目录下;

  • -v /mnt/mysql/conf:/etc/mysql :将容器/etc/mysql目录下的数据,备份到主机的mnt/mysql/conf目录下;

  • -e MYSQL_ROOT_PASSWORD=root :设置当前mysql实例的密码为root;

  • mysql:5.7 :需要运行的容器名称及版本号

通过此处-v命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动从主机加载到容器当中

配置文件

1)切换到上述命令配置的主机/mnt/mysql/conf目录下
   cd /mysqldata/mysql/conf
2)创建my.cnf
   touch my.cnf
3) 使用vim命令对my.cnf文件添加如下内容,在docker中安装的mysql默认字符集是latin1,需要改成utf8
   [client]
   default_character_set=utf8
   [mysqld]
   collation_server = utf8_general_ci
   character_set_server = utf8
4) 重启mysql容器实例,让刚才的配置文件生效
   docker restart mysql
5) 查看是否启动成功
   docker ps

补充 //以下为摘录

如果需要实现在运行容器实例时就执行SQL脚本,可以在上述命令的基础之上添加如下内容

1.创建如下目录

mkdir /mysqldata/mysql/init

2.在目录/mysqldata/mysql/init下创建名为init.sql的初始文件,该文件存放数据库需要初始化的内容

init.sql

##创建一个user用户,密码为123456
CREATE USER 'user'@'%' IDENTIFIED BY '123456';
##给user用户赋予数据库的所有权限
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
##刷新用户
flush privileges;
##创建数据库
create database test;
##建表
CREATE TABLE `userinfo`  (
  `uid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'uid',
  `userid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户id',
  `nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
  `usign` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `uimg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '/pic/userdefaultimg.jpg' COMMENT '用户头像',
  PRIMARY KEY (`uid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

##插入数据

INSERT INTO `userinfo` VALUES (1, '123', '11', '111', '/pic/11.jpg');

3.编写启动命令

docker run -d -p 3306:3306 \
--name mysql \
-v /mnt/mysql/log:/var/log/mysql \
-v /mnt/mysql/data:/var/lib/mysql \
-v /mnt/mysql/conf:/etc/mysql \
-v /mnt/mysql/init:/docker-entrypoint-initdb.d/ \
-e MYSQL_ROOT_PASSWORD=root mysql:5.7

STEP3 搭建tomcat8

1.这里用的自己的jdk tomcat 然后dockerfile build镜像 然后把war包放在webapps下面 启动容器

FROM centos
MAINTAINER kdlc 
#切换镜像目录,进入/usr目录
WORKDIR /usr/kdlc/
#在/usr/下创建jdk目录,用来存放jdk文件
RUN mkdir jdk
#在/usr/kdlc/下创建tomcat目录,用来存放tomcat
RUN mkdir tomcat
#将宿主机的jdk目录下的文件拷至镜像的/usr/kdlc/jdk目录下
ADD jdk8 /usr/kdlc/jdk/
#将宿主机的tomcat目录下的文件拷至镜像的/usr/kdlc/tomcat 目录下
ADD tomcat8 /usr/kdlc/tomcat/ 
#设置环境变量
ENV JAVA_HOME=/usr//kdlc/jdk
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH=/sbin:$JAVA_HOME/bin:$PATH 
#公开端口
EXPOSE 8080
#设置启动命令
ENTRYPOINT ["/usr/kdlc/tomcat/bin/catalina.sh","run"]

docker build -t kdlcsoft:v3 .

docker run

--link mysql:mysql --name=kdlcsoft

-d -p 80:8080 \

--name tomcat8 \

-v /mnt/tomcat/conf:/usr/kdlc/tomcat/conf\

-v /tomcat/webapps:/usr/kdlc/tomcat/webapps\

-v /tomcat/logs:/usr/kdlc/tomcat/logs\

docker logs -f -t --tail 500 tomcat8

  1. 如果用jar的方式部署那么就不用tomcat

将代码打包为jar文件kdlcsoft.jar 然后

docker build -t kdlcsoft:v3 .

docker run --link mysql:mysql --name=kdlcsoft -p 80:8090 -di kdlcsoft:v3 //--link后面的mysql映射到mysql容器 这个映射名字就是kdlcsoft包中数据库jdbcproterties中数据库连接地址中的host为mysql

docker logs -f -t --tail 500 kdlcsoft

但是这样会有一个问题那就是每次更换jar包的时候都需要重新build 不合理 所以

更新为挂载目录的方式 只需要替换jar就可以了

dockerfile如下

# Docker image for springboot file run
# VERSION 0.0.1
# Author: toutou
# 基础镜像使用java
FROM java:8
EXPOSE 8301
ENTRYPOINT ["java","-jar","/usr/kdlc/kdlcsoft.jar"]

docker run --link mysql:mysql --name=kdlcsoft -v /mnt/kdlcsoft:/usr/kdlc/

-p 80:8090 -di kdlcsoft:v3

同理 ENTRYPOINT ["java","-jar","/usr/kdlc/kdlcsoft.jar"] 这里也可以用CMD ["sh","-c","/data/hellolearn.sh"]脚本来代替

然后在run挂载对应的目录即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/333940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网关服务限流熔断降级分布式事务

目录一、网关服务限流熔断降级二、Seata--分布式事务1、分布式事务基础①事务②本地事物③分布式事务④分布式事务的场景2、分布式事务解决方案①全局事务②最大努力通知③TCC事务3、Seata介绍4、Seata实现分布式事务控制①案例基本代码(异常模拟)②启动…

机器学习调参

机器学习调参常用调参方法举例K邻近算法(最常规版本)加入交叉验证加上网格搜索GridSearchCV函数介绍GridSearchCVcross_val_score常用调参方法举例 sklearn使得我们在很多编写代码的时候更多的工作倾向于调参数而不是去写算法本身,本篇文章整…

HTML表单(属性/元素/输入类型/输入属性):看这一篇就够了

HTML表单 HTML 表单用于搜集不同类型的用户输入。 <form> 元素 HTML 表单用于收集用户输入。 <form> 元素定义 HTML 表单&#xff1a; 实例 <form>form elements</form> HTML 表单包含表单元素。 表单元素指的是不同类型的 input 元素、复选框、单…

maven 命令指定配置文件打包springboot项目

再开发过程中&#xff0c;通常用工具集成了maven&#xff0c;很少直接用maven命令操作打包&#xff0c;记不住&#xff0c;麻烦有时候工具也出现问题&#xff0c;只能用命令行下面很有必要记录一下这个过程我这里用idea编辑器&#xff0c;项目原因 打包本地配置环境可以&#x…

Oracle MAA 参考架构

文章目录总览青铜青铜 MAA 参考架构青铜特性青铜停机时间总结白银白银 MAA 参考架构白银特性白银停机时间总结黄金黄金 MAA 参考架构远程备库多备库备库读取器农场跨区域远程同步备库黄金特性黄金停机时间总结白金白金 MAA 参考架构白金特性白金停机时间总结参考文档总览 图1 …

Springboot+vue+hadoop+java图书个性化推荐系统

前台首页功能模块 3.1首页 图书个性化推荐系统&#xff0c;在前台首页可以查看首页、图书信息、好书推荐、留言反馈、个人中心、后台管理等内容&#xff0c;如图 3.2图书信息 在图书信息页面通过查看图书编号、图书名称、图书类别、图片、作者、出版社、版次、数量、点击次数等…

python自学之《21天学通Python》(10)——正则表达式

第13章 正则表达式 最初的正则表达式出现于理论计算机科学的自动控制理论和形式化语言理论中。在这些领域中有对计算&#xff08;自动控制&#xff09;的模型和对形式化语言描述与分类的研究。 程序员所用的正则表达式是指用某种模式去匹配一类具有共同特征的字符串。正则表达…

ant-design V4升级V5记录(成功篇)

官方文档&#xff1a;https://ant.design/docs/react/migration-v5-cn 1、安装运行工具之前&#xff0c;提交本地修改内容&#xff1b; 2、工具运行完&#xff0c;根据提示修改文件问题&#xff1b; 3、移除config文件中module&#xff0c; [import,{libraryName:antd, libr…

负载均衡上传webshell+apache换行解析漏洞

目录一、负载均衡反向代理下的webshell上传1、nginx负载均衡2、负载均衡下webshell上传的四大难点难点一&#xff1a;需要在每一台节点的相同位置上传相同内容的webshell难点二&#xff1a;无法预测下一次请求是哪一台机器去执行难点三&#xff1a;当我们需要上传一些工具时&am…

Jenkins创建多分支流水线

Jenkins创建多分支流水线一、准备工作二、安装插件1、安装Docker和Docker Pipeline2、安装Blue Ocean3、安装Publish Over SSH三、创建多分支流水线四、配置以及脚本四、构建项目在我们的实际开发过程中&#xff0c;我们势必会存在多个分支进行不同的研发需要&#xff0c;这个时…

【LoRa 与 LoRaWAN】知识点汇总

本文主要记录【LoRa 与 LoRaWAN】知识点汇总&#xff0c;知识均来源于网络&#xff0c;纯属资料汇总与搬运 涉及到lora基本知识点&#xff0c;lora芯片的工作分析&#xff0c;专业名词解释 【LoRa 与 LoRaWAN】知识点汇总1.Lora和LoraWAN的区别2. lora 相关知识点汇总2.1 Lora调…

MG996R舵机介绍

舵机简介舵机是一种位置&#xff08;角度&#xff09;伺服的驱动器&#xff0c;适用于那些需要角度不断变化并可以保持的控制系统。在高档遥控玩具&#xff0c;如飞机、潜艇模型&#xff0c;遥控机器人中已经得到了普遍应用。舵机主要是由外壳、电路板、驱动马达、减速器与位置…

C语言入门教程||C语言 循环||C语言 函数

C语言 循环有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执…

蓝桥杯刷题021——填字母游戏(DFS)

2017国赛 题目描述 小明经常玩 LOL 游戏上瘾&#xff0c;一次他想挑战 K 大师&#xff0c;不料 K 大师说&#xff1a; "我们先来玩个空格填字母的游戏&#xff0c;要是你不能赢我&#xff0c;就再别玩 LOL 了"。 K 大师在纸上画了一行 n 个格子&#xff0c;要小明和…

go语言的并发编程

并发编程是 Go语言的一个重要特性,而 go语言也是基于此而设计出来的。 本文将会介绍如何使用go-gc中的“runtime”方法实现 go语言中的并发编程。 在之前的文章中,我们已经对 runtime方法进行了详细介绍,这次文章将对 runtime方法进行深入分析,并讲解如何在go-gc中使用该方…

Java NIO学习(二):Channel通道

2.1 Channel 概述Java NIO 的通道类似流&#xff0c;但又有些不同&#xff1a;既可以从通道中读取数据&#xff0c;又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个 Buffer&#xff0c;或者总是要从一个 Buffer 中写入。2.2 Ch…

PrimoBurner SDK for .NET

PrimoBurner SDK for .NET PrimoBurnerSDK是一个CD、DVD和蓝光刻录工具开发工具包。PrimoBurner是跨平台的&#xff0c;它还提供了一个全面灵活的API&#xff0c;用于快速轻松地实现各种燃烧/翻录替代方案。现在PrimoBurner迫使许多卫生、国防、执法、娱乐和其他部门。 PrimoBu…

面试复习题--性能检测原理

1、布局性能检测 Systrace&#xff0c;内存优化工具中也用到了 Systrace,这里关注 Systrace 中的 Frames 页面&#xff0c;正常情况下圆点为绿色&#xff0c;当出现黄色或者红色的圆点时&#xff0c;表现出现了丢帧。 Layout Inspector&#xff0c;是 AndroidStudio 自带工具…

Python环境搭建、Idea整合

1、学python先要下载什么&#xff1f; 2、python官网 3、idea配置Python 4、idea新建python 学python先要下载什么&#xff1f; python是一种语言&#xff0c;首先你需要下载python&#xff0c;有了python环境&#xff0c;你才可以在你的电脑上使用python。现在大多使用的是pyt…

this指针

目录 一、关于this指针的一个经典问题 二、this指针的特点 &#xff08;一&#xff09;本质 &#xff08;二&#xff09;应用 1. 不使用this指针 2. 使用this指针 3. 两者代码对比 三、代码举例 1. 举例1 2. 举例2 一、关于this指针的一个经典问题 当你进入一个房子…