甲方需求是在一个容器上启动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二次开发相关推荐

  1. gogs mysql 报错_linux上Docker安装gogs私服亲测(详解)

    一.前言 有网友问我为什么要使用私服,可能大部分人都不是太懂,网上那么多存储仓库而且好用方便,但是你想过没有如果企业中的项目,放在人家的仓库上这个安全性不是太好,所以说一般企业都会有自己的私服.本章教 ...

  2. gogs mysql 报错_Gogs服务搭建 - osc_2ltf3y0p的个人空间 - OSCHINA - 中文开源技术交流社区...

    Gogs 安装教程(最简单版) 简介 Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支 ...

  3. gogs mysql 报错_Gogs服务搭建

    Gogs 安装教程(最简单版) 简介 Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支 ...

  4. gogs mysql 报错_Gogs 在 Docker 下的部署

    Gogs Gogs 是一款极易搭建的自助 Git 服务. Gogs 是用 Go 语言开发的,最简单.最快速和最轻松的方式搭建自助 Git 服务. 易安装 除了可以根据操作系统平台通过 二进制运行[1] ...

  5. 禅道启动mysql报错_测试工具之在Linux服务器上部署禅道Bug管理系统

    Linux本次使用到的命令行记录 链接服务器的命令 ssh [root@www.leimingtech.net](mailto:root@www.leimingtech.net) -p 22233 - ...

  6. python怎么捕获mysql报错

    一.前言 最近在运行python脚本的时候,经常出现:mysql server has gone away的错误,导致脚本停止运行.只是代码里面明明已经使用try: except 这种方式来捕获mys ...

  7. mysql报错:Reading table information for completion of table and column names

    一.前言 在使用命令行打开数据库的时候,报错如标题所示.这里总结记录一下. 二.错误原因 1.锁表的原因 参考链接:https://blog.csdn.net/ssergsw/article/deta ...

  8. 解决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 ...

  9. 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 摘自: ...

最新文章

  1. kaggle、TDS、arXiv等,我最喜欢的数据科学资源
  2. RMAN-03002、RMAN-06059
  3. Banana PI A20开发板 通过了CE,FCC,RoHS认证
  4. 用Pytorch实现三个优秀的自然图像分割框架!(包括FCN、U-Net和Deeplab,可直接训练预测)
  5. jquery 判断元素内容是否为空
  6. 分布式、高并发、多线程,到底有什么区别?
  7. 【LeetCode】0046.全排列 (递归详解)
  8. 如何添加交叉编译工具链(toolchain)到环境变量?(--sysroot路径)(新:ubuntu交叉编译工具链环境变量的配置)
  9. 如何使用 jMeter CSV Data Set config
  10. python彩票数据分析案例_天津Python人工智能课程
  11. mysql怎么获取系统_MySQL获取系统性能和状态代码
  12. layui 开启关闭标签_layui新手入门所踩的一些坑
  13. 数字与字符串相关问题
  14. 一位平凡毕业生的大学四年
  15. 聚类分析在SPSS上的实现及分析
  16. Oracle 应用篇+Oracle Siebel CRM
  17. 基于Web SCADA平台构建数字化车间的MES系统
  18. MSTP多实例配置实验
  19. 新买笔记本误删office2021解决方法
  20. 推荐一些常用的中外学术文献数据库网站

热门文章

  1. tomcat配置用户数据
  2. 用rate-limit来限制特定用户的流量
  3. Sharepoint Caml查询中时间格式
  4. 安装sun-java5-jdk 在ubuntu 9.10 提示无法找到软件包sun-java5-jdk#...
  5. mysql 白皮书_mysql企业版 《 MySQL企业版中文白皮书 》.cn.doc
  6. mysql not in语句_MySQL命令
  7. 什么是量子计算-超级简单的给你个解释
  8. 修改SAP系统字段描述的方法
  9. ABAP类的继承、多态、重载
  10. 报告如何单独添加水印?永洪BIV9.2解锁版权保护新方式