日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

gogs mysql 报错_docker上对gogs二次开发

發(fā)布時(shí)間:2025/3/20 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gogs mysql 报错_docker上对gogs二次开发 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

甲方需求是在一個(gè)容器上啟動(dòng)mysql服務(wù),另一個(gè)容器上搭gogs,且gogs可修改

一開(kāi)始的想法是搭一個(gè)go容器,然后源碼發(fā)上去直接改,然后發(fā)現(xiàn)不行,主要原因是我pull了golang的鏡像,但是似乎應(yīng)該用alpine,總之這塊沒(méi)弄清楚自己想要不就在centos上搭唄。

首先安裝mysql

run mysql

# 用于存放mysql數(shù)據(jù)文件

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個(gè)mysql配置文件 docker.cnf, mysql.cnf,

mysqldump.cnf

docker.cnf 內(nèi)容

[mysqld]

skip-host-cache

skip-name-resolve

mysql.cnf內(nèi)容

[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默認(rèn)字符集

init_connect? = 'SET NAMES utf8'

character-set-server = utf8

collation-server = utf8_unicode_ci

mysqldump.cnf內(nèi)容

[mysqldump]

quick

quote-names

max_allowed_packet? = 16M

啟動(dòng)mysql服務(wù)

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

在數(shù)據(jù)庫(kù)中創(chuàng)建庫(kù)gogs,utf-8

docker exec -it mysql56 bash進(jìn)入到容器中,mysql -u root -p進(jìn)入mysql然后create database什么的

然后就是艱苦的gogs嘗試記錄,我先把正確的方法寫(xiě)下來(lái),后面的是踩坑記錄腦子也挺亂的可能比較難看

1.直接運(yùn)行g(shù)ogs鏡像:

docker run -d -p 10022:22 -p 10080:3000 --name=gogs1 --net=backend -v

/opt/docker/gogs/:/data gogs/gogs

問(wèn)題:無(wú)法進(jìn)行二次開(kāi)發(fā),基礎(chǔ)鏡像內(nèi)文件無(wú)法更改。

2.源碼gogs搭建

本地編譯得到gogs文件

go build gogs.go

把整個(gè)項(xiàng)目壓縮成tar包

tar -zxvf gogs gogs.tar

下載go

wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz

打包go環(huán)境變量

vi go.sh

內(nèi)容為

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

#維護(hù)者信息

MAINTAINER TEST@TEST.COM

#設(shè)置用戶

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

#將服務(wù)器的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了,但是這樣會(huì)導(dǎo)致每次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#這句話運(yùn)行不了

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

#最終運(yùn)行docker的命令

CMD ["./gogs","web"]

這段里面給權(quán)限安全隱患較大但是因?yàn)樵赿ocker容器內(nèi)也沒(méi)那么危險(xiǎn)了,主要是為了讓git用戶有權(quán)限

源碼gogs搭建錯(cuò)誤歷史

本地編譯得到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

進(jìn)入網(wǎng)頁(yè)http://192.168.152.128:10080/

數(shù)據(jù)庫(kù)mysql56:3306

報(bào)錯(cuò):運(yùn)行系統(tǒng)用戶非當(dāng)前用戶:root ->

原因分析:gogs依賴于git服務(wù),沒(méi)有安裝gitX

使用git用戶運(yùn)行

su - git -c "cd /go/src/github.com/gogs/gogs && ./gogs web &"

編譯后轉(zhuǎn)到linux上運(yùn)行不了,報(bào)錯(cuò):[FATAL] [...gogs/gogs/cmd/web.go:66 checkVersion()] Fail to read

'templates/.VERSION': open /test/templates/.VERSION: no such file or directory

找不到文件

目前問(wèn)題:install后無(wú)法訪問(wèn)http://192.168.152.128:10080/ 配置文件嘗試

[server]

DOMAIN? ? ? ? ? = localhost

HTTP_PORT? ? ? ? = 3000

ROOT_URL? ? ? ? = http://localhost:10080/? ## 這個(gè)就是圖形界面的應(yīng)用URL的值

DISABLE_SSH? ? ? = false

SSH_PORT? ? ? ? = 10022

START_SSH_SERVER = false

OFFLINE_MODE? ? = false

錯(cuò)誤

如果配置文件沒(méi)問(wèn)題,是否設(shè)置端口號(hào)有問(wèn)題?

docker建立鏡像和導(dǎo)出到文件

docker commit 4977b34adaee mysql56

4977b34adaee為容器名 mysql56為鏡像名

docker save -o mysql56 mysql56

儲(chǔ)存鏡像為文件,前一個(gè)mysql56為文件名,后一個(gè)為鏡像名

測(cè)試:刪除docker鏡像后導(dǎo)入文件

docker stop 所有容器后

docker rmi mysql56

導(dǎo)入docker鏡像

docker load --input mysql56

總結(jié)

以上是生活随笔為你收集整理的gogs mysql 报错_docker上对gogs二次开发的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。