由于自己一台放demo的闲置服务器被入侵了,变成了矿机。借着这个由头,把服务器格了,准备重新部署。
但是如果还是老办法,按步骤一个一个安装 Postgres , 部署golang api ,部署nginx 跑angular,有点烦。 所以这几天,研究了一下怎么使用docker-compose来一键部署项目,发现,真香啊。
第一步:
安装docker-compose
root@hrgdrc:~/project# curl -sSL https://get.daocloud.io/docker | sh
root@hrgdrc:/home# curl -L https://get.daocloud.io/docker/compose/releases/download/1.28.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
root@hrgdrc:/usr/local/bin# chmod +x docker-compose
然后创建一个目录存放文件
mkdir docker-project
构建一个golang的容器
➜ docker-hr git:(main) cat Dockerfile
FROM golang:alpine
RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk update && \
apk add postgresql-dev bash
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
USER appuser
RUN mkdir /home/appuser/config
RUN mkdir /home/appuser/src
WORKDIR /home/appuser/src
COPY --chown=appuser:appgroup ./project/ ./
然后将golangr 二进制文件放到project目录之后。这里有一点要注意的是,由于我们容器使用的是alpine版本,所以在编译go的时候可以这么做:
CGO_ENABLED=0 go build main.go
第二步:创建docker-compose.yaml
➜ docker-hr git:(main) cat docker-compose.yml
version: '3'
services:
db:
image: postgres:latest
container_name: postgres01
environment:
POSTGRES_PASSWORD: 123456
POSTGRES_USER: postgres
POSTGRES_DB: db_hr
ports:
- "5433:5432"
networks: ['mynetwork']
web:
build: .
container_name: hr
command: bash -c "./main"
volumes:
- ./project:/src
expose:
- "8081"
- "8080"
ports:
- "8090:8080"
stdin_open: false
links:
- db
tty: false
networks: ['mynetwork']
restart: always
nginx:
image: nginx
container_name: nginx03
ports:
- "8010:80"
volumes:
- ./project/front:/usr/share/nginx/html
- ./config/nginx:/etc/nginx/conf.d
links:
- web
networks: ['mynetwork']
restart: always
networks: {mynetwork: {}}
这里使用了 networks: ['mynetwork'] 将3个容器都部署在同一个网络之中。
第三步: nginx配置
server {
listen 80 default_server;
listen [::]:80 default_server;
root /usr/share/nginx/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ /index.html =404; # 这一行最关键
}
}
最后一步:
1、 登录服务器
shell
root@hrgdrc:/home# apt update
root@hrgdrc:/home# apt install git
2、安装docker-compose
详见上面第一步
3、进入服务器拉取github
root@hrgdrc:~/project# git pull https://github.com.cnpmjs.org/yeelone/salary-docker-compose.git
4、构建docker-compose
root@hrgdrc:~/project# docker-compose build
root@hrgdrc:~/project# docker-compose up
5、记得在你的云服务器上放开相应的端口
总结:使用docker-compose之后,部署变得相当简单。
项目相关 :
体验地址:http://47.104.154.41:8010/dashboard
github地址:github.com/yeelone/sal…
项目核心开源:github.com/yeelone/hr-…