Ubuntu使用Docker安装Redis和MySQL并在本机部署Go项目

634 阅读5分钟

一、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 修改配置文件表示开启持久化

如果要放到生产环境或者需要自定义配置可以看其他大佬写的这一篇详细配置 这里我不再赘述

史上最详细Docker安装Redis(含每一步的图解)实战

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