gogs mysql 报错_docker上对gogs二次开发
甲方需求是在一个容器上启动mysql服务,另一个容器上搭gogs,且gogs可修改
一开始的想法是搭一个go容器,然后源码发上去直接改,然后发现不行,主要原因是我pull了golang的镜像,但是似乎应该用alpine,总之这块没弄清楚自己想要不就在centos上搭呗。
首先安装mysql
run mysql
# 用于存放mysql数据文件
mkdir /opt/docker/data/mysql/data
# 用于存放mysql配置文件
mkdir /opt/docker/data/mysql/conf
cd /opt/docker/data/mysql/conf
在/opt/docker/data/mysql/conf目录下建立3个mysql配置文件 docker.cnf, mysql.cnf,
mysqldump.cnf
docker.cnf 内容
[mysqld]
skip-host-cache
skip-name-resolve
mysql.cnf内容
[mysql]
default-character-set = utf8
[mysql_safe]
default-character-set = utf8
[client]
default-character-set = utf8
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# 修改mysql默认字符集
init_connect = 'SET NAMES utf8'
character-set-server = utf8
collation-server = utf8_unicode_ci
mysqldump.cnf内容
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
启动mysql服务
docker run -d --name mysql56 --net=backend -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v
/opt/docker/data/mysql/data:/var/lib/mysql -v /opt/docker/data/mysql/conf:/etc/mysql/conf.d
mysql:5.6
在数据库中创建库gogs,utf-8
docker exec -it mysql56 bash进入到容器中,mysql -u root -p进入mysql然后create database什么的
然后就是艰苦的gogs尝试记录,我先把正确的方法写下来,后面的是踩坑记录脑子也挺乱的可能比较难看
1.直接运行gogs镜像:
docker run -d -p 10022:22 -p 10080:3000 --name=gogs1 --net=backend -v
/opt/docker/gogs/:/data gogs/gogs
问题:无法进行二次开发,基础镜像内文件无法更改。
2.源码gogs搭建
本地编译得到gogs文件
go build gogs.go
把整个项目压缩成tar包
tar -zxvf gogs gogs.tar
下载go
wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz
打包go环境变量
vi go.sh
内容为
export GOROOT=/data/work/go
export GOPATH=/data/work/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
下拉centos镜像
docker pull centos
建立dockerfile
vi DockerfileFROM centos:latest
#维护者信息
MAINTAINER TEST@TEST.COM
#设置用户
RUN groupadd git && useradd -r -g git git
RUN mkdir /home/git
RUN mkdir /gogs
RUN mkdir /go
run chmod 777 /go
RUN chmod 777 /gogs
RUN mkdir /root/gogs
RUN mkdir /root/go
RUN chmod 777 /root/go
RUN chmod 777 /root/gogs
RUN mkdir /usr/local/git
RUN chmod 777 /usr/local/git
#将服务器的go工程代码加入到docker容器中
COPY ./gogs.tar /gogs
COPY ./go1.12.6.linux-amd64.tar.gz /root
#COPY ./git-2.9.5.tar.gz /usr/local/git/
#源码安装git太麻烦还是用yum了,但是这样会导致每次build都要下载git
COPY ./go.sh /etc/profile.d/
#COPY ./git.sh /etc/profile.d/
#RUN tar -C /usr/local/git -zxvf /usr/local/git/git-2.9.5.tar.gz
#RUN cd /usr/local/git/git-2.9.5 && ls -a && ./configure --prefix=/usr/local/git && make && make install
RUN yum install -y git
RUN git --version
RUN tar -C /usr/local/ -zxvf /root/go1.12.6.linux-amd64.tar.gz && ls -a /usr/local/go
RUN tar -zxvf /gogs/gogs.tar
RUN source /etc/profile.d/go.sh
#RUN source /etc/profile.d/git.sh
#RUN go env#这句话运行不了
RUN chmod -R 777 /root
RUN chmod -R 777 /home
RUN chmod -R 777 /usr
RUN chmod -R 777 /opt
RUN ls -a /root/gogs
RUN rm -f /root/go1.12.6.linux-amd64.tar.gz
RUN rm -f /gogs/gogs.tar
WORKDIR /root/gogs
USER root
RUN whoami
#暴露端口
EXPOSE 3000
EXPOSE 22
#最终运行docker的命令
CMD ["./gogs","web"]
这段里面给权限安全隐患较大但是因为在docker容器内也没那么危险了,主要是为了让git用户有权限
源码gogs搭建错误历史
本地编译得到gogs文件
go build gogs.go
上传到linux
//docker run -it -v /root/gogs:/gogs -v /root/test/:/test -p 10022:22 -p 10080:3000 --name=gogs
--privileged centos bash
docker run -it -v /root/test/:/test -p 10022:22 -p 10080:3000 --name=gogs --network=backend --
privileged golang bash
//cd src/github.com/gogs/gogs/
//go build
./gogs web
进入网页http://192.168.152.128:10080/
数据库mysql56:3306
报错:运行系统用户非当前用户:root ->
原因分析:gogs依赖于git服务,没有安装gitX
使用git用户运行
su - git -c "cd /go/src/github.com/gogs/gogs && ./gogs web &"
编译后转到linux上运行不了,报错:[FATAL] [...gogs/gogs/cmd/web.go:66 checkVersion()] Fail to read
'templates/.VERSION': open /test/templates/.VERSION: no such file or directory
找不到文件
目前问题:install后无法访问http://192.168.152.128:10080/ 配置文件尝试
[server]
DOMAIN = localhost
HTTP_PORT = 3000
ROOT_URL = http://localhost:10080/ ## 这个就是图形界面的应用URL的值
DISABLE_SSH = false
SSH_PORT = 10022
START_SSH_SERVER = false
OFFLINE_MODE = false
错误
如果配置文件没问题,是否设置端口号有问题?
docker建立镜像和导出到文件
docker commit 4977b34adaee mysql56
4977b34adaee为容器名 mysql56为镜像名
docker save -o mysql56 mysql56
储存镜像为文件,前一个mysql56为文件名,后一个为镜像名
测试:删除docker镜像后导入文件
docker stop 所有容器后
docker rmi mysql56
导入docker镜像
docker load --input mysql56
gogs mysql 报错_docker上对gogs二次开发相关推荐
- gogs mysql 报错_linux上Docker安装gogs私服亲测(详解)
一.前言 有网友问我为什么要使用私服,可能大部分人都不是太懂,网上那么多存储仓库而且好用方便,但是你想过没有如果企业中的项目,放在人家的仓库上这个安全性不是太好,所以说一般企业都会有自己的私服.本章教 ...
- gogs mysql 报错_Gogs服务搭建 - osc_2ltf3y0p的个人空间 - OSCHINA - 中文开源技术交流社区...
Gogs 安装教程(最简单版) 简介 Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支 ...
- gogs mysql 报错_Gogs服务搭建
Gogs 安装教程(最简单版) 简介 Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支 ...
- gogs mysql 报错_Gogs 在 Docker 下的部署
Gogs Gogs 是一款极易搭建的自助 Git 服务. Gogs 是用 Go 语言开发的,最简单.最快速和最轻松的方式搭建自助 Git 服务. 易安装 除了可以根据操作系统平台通过 二进制运行[1] ...
- 禅道启动mysql报错_测试工具之在Linux服务器上部署禅道Bug管理系统
Linux本次使用到的命令行记录 链接服务器的命令 ssh [root@www.leimingtech.net](mailto:root@www.leimingtech.net) -p 22233 - ...
- python怎么捕获mysql报错
一.前言 最近在运行python脚本的时候,经常出现:mysql server has gone away的错误,导致脚本停止运行.只是代码里面明明已经使用try: except 这种方式来捕获mys ...
- mysql报错:Reading table information for completion of table and column names
一.前言 在使用命令行打开数据库的时候,报错如标题所示.这里总结记录一下. 二.错误原因 1.锁表的原因 参考链接:https://blog.csdn.net/ssergsw/article/deta ...
- 解决MySQL报错ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)
解决MySQL报错ERROR 2003 HY000: Can't connect to MySQL server on 'localhost:3306' 10061 笔者在新电脑安装完 MySQL ...
- MySQL : 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost...
MySQL : 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost 摘自: ...
最新文章
- kaggle、TDS、arXiv等,我最喜欢的数据科学资源
- RMAN-03002、RMAN-06059
- Banana PI A20开发板 通过了CE,FCC,RoHS认证
- 用Pytorch实现三个优秀的自然图像分割框架!(包括FCN、U-Net和Deeplab,可直接训练预测)
- jquery 判断元素内容是否为空
- 分布式、高并发、多线程,到底有什么区别?
- 【LeetCode】0046.全排列 (递归详解)
- 如何添加交叉编译工具链(toolchain)到环境变量?(--sysroot路径)(新:ubuntu交叉编译工具链环境变量的配置)
- 如何使用 jMeter CSV Data Set config
- python彩票数据分析案例_天津Python人工智能课程
- mysql怎么获取系统_MySQL获取系统性能和状态代码
- layui 开启关闭标签_layui新手入门所踩的一些坑
- 数字与字符串相关问题
- 一位平凡毕业生的大学四年
- 聚类分析在SPSS上的实现及分析
- Oracle 应用篇+Oracle Siebel CRM
- 基于Web SCADA平台构建数字化车间的MES系统
- MSTP多实例配置实验
- 新买笔记本误删office2021解决方法
- 推荐一些常用的中外学术文献数据库网站
热门文章
- tomcat配置用户数据
- 用rate-limit来限制特定用户的流量
- Sharepoint Caml查询中时间格式
- 安装sun-java5-jdk 在ubuntu 9.10 提示无法找到软件包sun-java5-jdk#...
- mysql 白皮书_mysql企业版 《 MySQL企业版中文白皮书 》.cn.doc
- mysql not in语句_MySQL命令
- 什么是量子计算-超级简单的给你个解释
- 修改SAP系统字段描述的方法
- ABAP类的继承、多态、重载
- 报告如何单独添加水印?永洪BIV9.2解锁版权保护新方式