wordpress支持多站点,wordpress上传源码,中国基建人才培训网证书查询,北京企业网站seo平台Docker使用DockerFile部署Go项目1. 文章说明2. Go项目打包到Linux2.1 学习链接与知识点2.2. 打包生成 main 文件2.3 Docker部署Go项目1. 文章说明
目的#xff1a;将打包生成的 main 文件#xff0c;在Docker里面#xff0c;使用Dockerfile文件#xff0c;生成镜像与容器将打包生成的 main 文件在Docker里面使用Dockerfile文件生成镜像与容器将命令写成shell文件每次发布直接运行即可
- 使用Goland软件开发Go项目
-
- MobaXterm_Personal_20.3 软件远程连接服务器
-
- 服务器安装了Docker,里面也安装了nginx
如果go后端 vue前端 前后端都要发布线上可按顺序查看Docker使用DockerFile部署Go项目
https://blog.csdn.net/weixin_45941687/article/details/129854513Vue项目proxyTable跨域配置
https://blog.csdn.net/weixin_45941687/article/details/129858961Vue Cli2.0项目自定义访问路径并打包发布
https://blog.csdn.net/weixin_45941687/article/details/129858780
2. Go项目打包到Linux
2.1 学习链接与知识点
学习连接 - linux中 echo 里 \033 含义 学习链接 - 重要 - docker基础之DockerFile ❤ 学习链接 - 参考 - Golang項目部署 1. #!/bin/sh 不是注释是对shell声明#! 是特殊的表示符只能放第一行2. echo命令打印带有颜色的字符格式 echo -e \033[字背景颜色;字体颜色m字符串\033[0m3. MAINTAINER指令设置生成的镜像的Author字段已经废弃使用。LABEL指令是一个更灵活的版本4. ADD 指令和 COPY 的格式和性质基本一致。但是在 COPY 基础上增加了一些功能5. 生成镜像的命令# 命令 docker build -f dockerfile文件路径 -t 镜像名:[tag] .docker build -f myDockerDile-Centos -t mycentos:0.1 .
2.2. 打包生成 main 文件
config.yaml 文件的配置更改成线上环境
注意一般Terminal 窗口执行即可但项目路径如果有中文建议cmd在项目路径下执行生成 main 文件没有后缀
set GOARCHamd64
set GOOSlinux
go build main.go2.3 Docker部署Go项目
① 进入服务器创建存放项目文件夹sjjwtest
mkdir sjjwtest② 打包的 main 文件拖进”sjjwtest“文件夹
③ 在”sjjwtest“ 里面创建 文件夹 与 文件
# 创建文件夹
# 除 config 与 data 文件夹 , 其他看需求像upload是我项目上传图片存的地方
mkdir upload template public data config#创建文件
touch Dockerfile run.sh④ config.yaml 文件 放置在 第 ③ 步创建的 config 文件夹下
⑤ 编辑 Dockerfile 文件内容
1. 编辑 Dockerfile 文件
[rootecs-dead sjjwtest]# vim Dockerfile2. 进入文件后按 字母 I 进入编辑模式内容如下 :
Dockerfile 文件内容如下
FROM loads/alpine:3.8LABEL maintainer15***18163.comENV WORKDIR /var/www/mainADD ./main $WORKDIR/main
RUN chmod x $WORKDIR/mainADD public $WORKDIR/public
ADD config $WORKDIR/config
ADD template $WORKDIR/template
ADD upload $WORKDIR/uploadWORKDIR $WORKDIRENTRYPOINT [./main]3. 编辑完成后按esc键退出编辑模式输入:wq ,执行 保存并退出 的操作
# 如果要查看文件里面的内容执行 cat Dockerfile
rootecs-dead sjjwtest]# cat Dockerfile
⑥ 编辑 run.sh 文件内容
1. 编辑 run.sh 文件
[rootecs-dead sjjwtest]# vim run.sh2. 进入文件后按 字母 I 进入编辑模式内容如下 :
run.sh 文件内容如下
注意cd /dat***er/sjjwtest 文件夹位置根据自己的来-p 8002:8002 端口号设置根据自己项目的来-v 挂载的路径根据自己创建的路径-v 自己文件路径:/var/www/main/public#!/bin/bash
cd /data/docker/container/sjjwtestecho -e \033[91m 开始执行... \033[0mdocker stop sjjwtest
docker rm sjjwtest
docker rmi sjjwtestdocker build -t sjjwtest .
docker run -d -p 8002:8002 --restartalways --name sjjwtest --privilegedtrue -v /data/docker/container/sjjwtest/public:/var/www/main/public -v /data/docker/container/sjjwtest/template:/var/www/main/template -v /data/docker/container/sjjwtest/config:/var/www/main/config -v /data/docker/container/sjjwtest/data:/var/www/main/data -v /data/docker/container/sjjwtest/upload:/var/www/main/upload sjjwtestecho -e \033[36m执行结束...\033[0m3. 编辑完成后按esc键退出编辑模式输入:wq ,执行 保存并退出 的操作
# 如果要查看文件里面的内容执行 cat run.sh [rootecs-dead sjjwtest]# cat run.sh
⑦ 查看run.sh 文件权限并修改 [rootecs-dead sjjwtest]# ls -al
total 32
drwxr-xr-x 7 root root 4096 Mar 30 13:58 .
drwxr-xr-x 8 root root 4096 Mar 30 13:27 ..
drwxr-xr-x 2 root root 4096 Mar 30 13:27 config
drwxr-xr-x 2 root root 4096 Mar 30 13:27 data
-rw-r--r-- 1 root root 302 Mar 30 13:31 Dockerfile
drwxr-xr-x 2 root root 4096 Mar 30 13:27 public
-rw-r--r-- 1 root root 0 Mar 30 13:46 run.sh
drwxr-xr-x 2 root root 4096 Mar 30 13:27 template
drwxr-xr-x 2 root root 4096 Mar 30 13:27 upload# r 读值为4
# w 写值为2
# x 执行值为1
# 为 run.sh 文件添加执行权限文件会变成绿色[rootecs-dead sjjwtest]# chmod x run.sh
[rootecs-dead sjjwtest]# ls
config data Dockerfile public run.sh template upload
[rootecs-dead sjjwtest]# ls -al
total 32
drwxr-xr-x 7 root root 4096 Mar 30 13:58 .
drwxr-xr-x 8 root root 4096 Mar 30 13:27 ..
drwxr-xr-x 2 root root 4096 Mar 30 13:27 config
drwxr-xr-x 2 root root 4096 Mar 30 13:27 data
-rw-r--r-- 1 root root 302 Mar 30 13:31 Dockerfile
drwxr-xr-x 2 root root 4096 Mar 30 13:27 public
-rwxr-xr-x 1 root root 0 Mar 30 13:46 run.sh
drwxr-xr-x 2 root root 4096 Mar 30 13:27 template
drwxr-xr-x 2 root root 4096 Mar 30 13:27 upload
⑧ 运行run.sh文件查看容器是否正常运行再设置nginx转发使外网也可以访问
1. run.sh文件运行命令 ./run.sh 2.查看容器
[rootecs-dead conf.d]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a2d7576dbb83 sjjwtest ./main 23 hours ago Up 22 hours 0.0.0.0:8002-8002/tcp sjjwtest
... ...3.查看容器日志是否有问题
[rootecs-dead conf.d]# docker logs -f a2d7576dbb83
2023-03-29 15:11:50.057 [INFO] pid[1]: http server started listening on [:8002]
2023-03-29 15:11:50.057 [INFO] swagger ui is serving at address: http://127.0.0.1:8002/swagger/
2023-03-29 15:11:50.057 [INFO] openapi specification is serving at address: http://127.0.0.1:8002/api.json
... ...4.nginx配置外网访问
location /api/ { proxy_pass http://192.168.0.175:8002/;
}访问本地 http://127.0.0.1:8002/captcha
外网访问线上 域名/api/captcha