1.git clone 前后端项目

2.安装docker

sudo apt-get update
sudo apt-get install     apt-transport-https     ca-certificates     curl     gnupg-agent     software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world

3.安装docker compose

这个命令需要代理,而且网速很慢(可以使用scp下载, 链接: https://pan.baidu.com/s/1YoPO1StZkGOoArkPkIjFAA 提取码: hbdg )

wget

 https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64

sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

docker-compose --version

输出:

Docker Compose version v2.5.0

4。安装docker postgres15

sudo docker pull postgres:15

docker run  -e POSTGRES_PASSWORD=abdfdd3859a24c -d postgres

docker ps

输出:

CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS      NAMES
42701b5edfd0   postgres   "docker-entrypoint.s…"   5 seconds ago   Up 2 seconds   5432/tcp   laughing_faraday

docker inspect 4270

ip address: 172.18.0.2

5.安装go

wget https://golang.org/dl/go1.18.3.linux-amd64.tar.gz
tar -xvf go1.18.3.linux-amd64.tar.gz
sudo mv go /usr/local/go_1.18.3

vim 
.bashrc

export PATH=$PATH:/usr/local/go_1.18.3/bin

go version

go version go1.18.3 linux/amd64

6.部署后端

进入后端:

go build

修改conf/app.ini

修改postgres的密码和端口号(5432)和ip(172.18.0.2)

创建数据库:

sudo docker exec -it 4270 /bin/bash

su postgres

psql

create database database_name;

启动./xxx(生成的可执行文件)

7.启动后端

使用静态文件,在本地yarn build生成后,scp到服务器即可

8.配置nginx

react端使用静态配置,go后端使用动态配置

server {
  listen       80;
  server_name  xxx.xxx.com;
  charset utf-8;

  #location ~ ^/uploads/ {
  #  root /root/blog/public;
  #}

  location / {
    #root localhost:8000;
    #proxy_pass          server localhost:8000;
    proxy_pass          http://your_site_name_server;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_next_upstream http_502 http_504 error timeout invalid_header;
    proxy_set_header Cookie $http_cookie;
  }

}

upstream yoursite_name_server{
  server localhost:8000;
}

前端使用:

server {
  listen 80;
  server_name xxx.xxx.com;
  charset utf-8;

  root /tmp/build;
  index index.html;

  location / {
    add_header Access-Control-Allow-Origin http://xxx.xx.com;
    add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
    add_header Access-Control-Allow-Headers 'Origin, Authorization, Content-Type';
    if ($request_method = 'OPTIONS') {
      add_header Access-Control-Max-Age 86400;
      add_header Content-Length 0;
      add_header Content-Type 'text/plain; charset=utf-8';
      return 204;
    }
    try_files $uri $uri/ /index.html;
  }
}