Centos7基于docker搭建gitlab mysql tomcat

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

Centos7基于docker搭建gitlab mysql tomcat_第1张图片

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

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

Centos7基于docker搭建gitlab mysql tomcat_第2张图片

修改之后重启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挂载对应的目录即可

你可能感兴趣的:(docker,gitlab,docker,运维)