Linux下使用Docker部署go_web(包含错误以及解决办法)

Docker配置

安装Docker

官方文档
安装

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io

启动

systemctl start docker

配置镜像加速(可忽略)

三个国内源:
	阿里(收费)
	网易(免费)
	中国科学技术大学源(免费)

进入编辑模式

vi /etc/docker/daemon.json	

粘贴以下代码并保存退出

{
	"registry-mirrors":["http://hubmirror.c.163.com","https://docker.mirrors.ustc.educn"]
}

重新加载配置并重启Docker

sudo systemctl daemon-reload
systemctl restart docker

Linux下部署

参考Qimi李文周博客文献

本地编写代码以及DockerFile文件

Dockerfile

#拉取哪个镜像
FROM golang:alpine AS builder

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOPROXY=https://goproxy.cn,direct \
    GOARCH=amd64

# 移动到工作目录:/build
WORKDIR /build

# 复制项目中的 go.mod 和 go.sum文件并下载依赖信息
COPY go.mod .
COPY go.sum .
RUN go mod download

# 将代码复制到容器中
COPY . .

# 将我们的代码编译成二进制可执行文件 bubble
RUN go build -o bulebell_app .

###################
# 接下来创建一个小镜像
###################
FROM scratch

COPY ./templates /templates
COPY ./static /static
COPY ./conf /conf

# 从builder镜像中把/dist/app 拷贝到当前目录
COPY --from=builder /build/bulebell_app /

# 需要运行的命令
ENTRYPOINT ["/bulebell_app", "conf/config.yaml"]

拉取所需要的镜像

准备可能用到的镜像,比如Mysql,Redis

docker pull mysql
docker pull redis

将文件上传至服务器

可通过编译器长传至服务器(goland)或者(xshell)等

在这里插入图片描述

编译执行

在项目目录下,执行下面的命令创建镜像,并指定镜像名称
docker build . -t bulebell_app

创建关联容器(mysql,redis等)

docker run --name mysql3306 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/yao/docker/mysql:/var/lib/mysql -d mysql
docker run --name redis6379 -p 6379:6379  -v /Users/yao/docker/redis:/var/lib/redis -d redis

运行容器

docker run --link=mysql3306:mysql3306 --link=redis6379:redis6379  -p 8080:8080 bulebell_app

在这里插入图片描述

常见错误

链接数据库失败

检查是否可以用Navicat软件连接上数据库:

如果可以:那么检查项目中config配置以及Dockerfile文件中的(端口,用户,密码)是否和容器一致。

如果不可以:检查数据库容器是否在运行,启动容器即可

运行时报错

重启Docker

docker: Error response from daemon:......

启动服务却访问超时

检查安全组是否有这个端口
防火墙没有允许这个端口的访问

# 防火墙设置
systemctl status firewalld		查看firewalld状态 (防火墙)
systemctl start firewalld	开启防火墙
systemctl stop firewalld	关闭防火墙

# 端口设置
sudo firewall-cmd --list-all	查看防火墙中允许访问的端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent	使其开启8080端口
sudo firewall-cmd --reload	重启防火墙

端口被占用

netstat -tln  查找所有端口信息
netstat -tln | grep 8080  	仅查找8080端口的占用信息

lsof -i :8080 	查看端口属于哪个程序?端口被哪个进程占用

kill -9 进程id  杀掉占用端口的进程

.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是在Linux使用docker部署nacos的步骤: 1. 安装docker 如果您的Linux机器上还没有安装docker,您需要先安装docker。可以执行以下命令来安装: ``` curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun ``` 2. 下载nacos的docker镜像文件 运行以下命令: ``` docker pull nacos/nacos-server ``` 3. 启动nacos容器 运行以下命令: ``` docker run --name nacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server ``` 其,`--name`指定容器名称,`-e MODE=standalone`指定nacos为单机模式,`-p 8848:8848`指定映射到主机的端口号为8848。 4. 访问nacos 在浏览器输入以下网址进行访问:http://<Linux机器IP>:8848/nacos/ 现在,您已经成功部署了nacos! 如果您无法访问nacos界面,请检查以下几点: 1. 确认nacos容器是否已经启动 您可以运行以下命令查看容器状态: ``` docker ps -a ``` 如果nacos容器的状态为`Exited`,则说明容器启动失败。您可以运行以下命令查看容器日志,以便更好地排查问题: ``` docker logs nacos ``` 2. 确认端口是否正确映射 您可以运行以下命令查看容器端口映射情况: ``` docker port nacos ``` 如果您发现端口没有正确映射到主机上,您可以停止并删除容器,然后重新启动容器并指定正确的端口映射参数。 3. 确认防火墙是否允许访问端口 如果您的Linux机器上启用了防火墙,可能会阻止对nacos端口的访问。您可以尝试关闭防火墙或者配置防火墙规则以允许对端口的访问。 希望这些建议能够帮助您解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值