一、Docker 安装
这里我们安装社区版
sudo apt install docker-ce
如果安装成功 直接跳到镜像部分。
如果安装失败 继续看:
这里我用wsl里的ubuntu安装报错
wsl ubuntu Package 'docker-ce' has no installation candidate
意思没有这个环境包 那么就需要如下操作
参考:# Ubuntu 20.04上安装Docker-CE社区版
// 1.安装几个依赖包,让apt可以支持HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
// 2.将官方Docker库的GPG公钥添加到系统中:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
// 3.将Docker库添加到APT里:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
// 4.再次更新现有包列表
sudo apt update
// 5.为了确保修改生效,让新的安装从Docker库里获取,而不是从Ubuntu自己的库里获取,执行:
apt-cache policy docker-ce
// 6.安装docker
sudo apt install docker-ce
// 7.查看docker状态
sudo systemctl status docker
二、镜像 下载
Redis
这里拉取7.2版本
sudo docker pull redis:7.2
MySQL
可以访问 Docker Hub 查看 MySQL的版本
sudo docker pull mysql:8.0.31
这里为什么拉取 8.0.31 版本? 具体看这篇文章 Docker 安装 MySQL 登录报错
三、启动容器
查看所有镜像
sudo docker images
可以看到我们刚才拉取的2个镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.31 05db07cd74c0 11 hours ago 565MB
redis 7.2 0ec8ab59a35f 46 hours ago 117MB
1、Redis
创建Redis容器
sudo docker run -itd -p 6379:6379 -v /home/redis/data:/data --name rediss redis:7.2 redis-server --requirepass 1234qwer --appendonly yes
这里的 -itd 是 -i -t -d 和简写 这里的只说下 -d 表示 在后台运行
- -v /home/redis/data:/data redis:latest 挂载数据到本机
- --requirepass 1234qwer 设置数据库密码为 1234qwer
- --appendonly yes 修改配置文件表示开启持久化
如果要放到生产环境或者需要自定义配置可以看其他大佬写的这一篇详细配置 这里我不再赘述
3、进入Redis容器
sudo docker exec -it rediss bash
进入redis服务
redis-cli
校验密码
auth 1234qwer
返回 ok 说明设置的密码 没问题
查看密码
config get requirepass
按 ctrl+c 退出redis服务 然后按 Ctrl+P+Q 退出容器
2、MySQL
创建MySQL容器
sudo docker run -d --name mysql-ser -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234qwer mysql:8.0.31
这里的 -e MYSQL_ROOT_PASSWORD=1234qwer 是为 mysql 的 root 设置密码
注意这里的 -d 一定要后台运行
等创建后 后先不要进入容器 等十几秒 等容器里的MySQL 初始化完成
或者进入容器后 先不要登录MySQL服务
如果这个时候登录MySQL服务 配置可能出问题 导致无法登录
进入MySQL容器
sudo docker exec -it mysql-ser bash
查看是否初始化完成 Docker 安装 MySQL 8 版本
cd /var/run/mysqld
如果在这个路径下能能看到 mysqld.sock 说明初始化完成 可以登录了
登录mysql服务
mysql -u root -p
输入密码登录即可
接下来就进入到MySQL服务了
创建项目要用到的数据库
create database db_web;
表示 创建一个叫 db_web 的数据库
添加用户
为安全起见 一个项目对于一个库 建立一个用户 避免密码泄露导致整个库GG
create user 'itloser'@'%' identified with mysql_native_password by '1234qwer';
表示 用户 itloser 可以从任何网络 % 登录mysql服务 密码是 1234qwer
授权
需要将将刚才创建的 db_web数据库 授权给 itloser
GRANT ALL ON db_web.* TO 'itloser'@'%';
ALL 表示 所有权限
db_web.* 表示 db_web这个库的所有表
这句话就是 将 db_web的所有权限授权给 从远程登录的itloser
退出容器
先退出MySQL服务回到容器
exit;
到此 MySQL的容器基本配置完成
退出即可 Ctrl+P+Q
四、项目同步
Git安装
这里使用git 如果不用git ftp或者什么其他的也行 就是麻烦点 这里不赘述
安装docker时 会自动安装git 如果没有可以
sudo apt install git
由于上面容器配置了项目路径挂载到本机 所以等于容器在使用本机路径 则本机路径是什么内容 容器里就是什么内容
拉取项目
git pull xxx
五、运行
上面 已经用git拉取了最新的代码
进入golang容器
进入容器的项目路径
直接运行即可
go run main.go
使用 nohup 运行
nohup go run main.go > err.log 2>&1 &
如果 run 或者 build 失败 是你网络不行 需要切换到国内源
换源 Go换国内源
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
六、Docker常用命令
查看本机所有镜像
sudo docker images
查看本机所有容器
sudo docker ps -a
进入容器
sudo docker exec -it xxx /bin/bash
sudo docker exec -it xxx bash
停止容器
sudo docker stop xxx
删除容器
sudo docker rm xxx
删除镜像
sudo docker rmi xxx
本机直接安装Golang
结束进程
搜索进程名称
pgrep xxx
列出所有进程
ps aux
列出这个用户的进程
ps aux | grep username
查询占用该端口的进程
lsof -i tcp:25565
杀死进程
kill -9 pid