Docker方式搭建Gogs环境
–
一、 镜像准备:
因为从官网的dockerhub仓库拉取镜像实在太慢,换了镜像源,操作如下:
修改/usr/lib/systemd/system/docker.service文件,在ExecStart中添加:
–registry-mirror=https://docker.mirrors.ustc.edu.cn 启动项。
添加后完整文件如下。
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer
[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
--registry-mirror=https://docker.mirrors.ustc.edu.cn \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=systemd \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave
[Install]
WantedBy=multi-user.target
然后重启docker服务:
systemctl daemon-reload
systemctl restart docker.service
–
1. docker pull gogs ## 拉取Gogs镜像
–
2. docker pull mysql ## 拉取MySQL镜像
–
以上操作完成后使用docker images查看镜像,如下:
[root@zxg ~]$ docker images
docker.io/mysql latest d5127813070b 2 days ago 407.1 MB
docker.io/gogs/gogs latest 4f7cef3b4ef6 6 days ago 126.8 MB
[root@zxg ~]$
3. 为方便使用,给以上两个镜像打上自己的标签
docker tag docker.io/mysql:latest mysql:zxg
docker tag docker.io/gogs/gogs:latest gogs:zxg
二、基于mysql镜像,制作符合要求的mysql镜像
由于拉取的mysql镜像,其编码默认是latin,而gogs要求是utf8,因此,需要修改编码,制作新镜像,步骤如下:
1. 得到mysql的配置文件
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:zxg ## 运行出一个MySQL容器
docker cp MySQL容器ID:/etc/mysql/mysql.conf.d/mysqld.cnf . ## 拷贝mysql的配置文件到当前目录
–
2. 修改MySQL配置文件
在上一步得到的mysqld.cnf文件中,增加character-set-server = utf8, 大致如下
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
character-set-server = utf8
init_connect = 'SET NAMES utf8'
3. 编写Dockerfile持久化MySQL配置文件
FROM mysql:zxg
ADD mysqld.cnf /etc/mysql/mysql.conf.d/
4. 根据dockerfile编译新镜像
docker build -t mysqlutf8:zxg --no-cache=true -f Dockerfile .
–
三、运行gogs容器,mysql容器
1. 运行utf8编码的MySQL容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /opt/mysql:/var/lib/mysql -v /etc/localtime:/etc/localtime mysqlutf8:zxg
2. 运行gogs容器
docker run -d -p 10080:3000 10022:22 -v /opt/gogs:/data -v /etc/localtime:/etc/localtime gogs:zxg
四、新建gogs数据库
进入mysql容器新建gogs数据库
docker exec -it mysqlutf8容器ID bash
[root@zxg opt]$ docker exec -it 1ec bash
root@1ec26f5dc361:/# mysql -h 127.0.0.1 -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.7.18 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database gogs default character set utf8 collate utf8_general_ci;
五、浏览器访问http://ip:10080
1. 配置mysql
–
2. 配置gogs应用
–
3.可选配置