EXPRESS-GO
安装Redis
# 下载redis镜像
docker pull redis
# 下载官方配置
# wget https://raw.githubusercontent.com/redis/redis/6.0/redis.conf
vi redis.conf
# 注释掉这一行
# bind 127.0.0.1
# protected-mode no
# 开启持久化
appendonly yes
# 设置密码
# 搜索 requirepass 在后面追加认证密码
# 启动redis
# --name 设置容器名; -d 后台模式运行; -p 端口映射; -v 目录映射;然后是镜像名,
# 因为要配置redis的参数,需要先制定镜像,然后才是容器里的配置参数
# 也就是这里的redis-server给他制定了一个redis.conf配置文件,然后设置开启aof文件的追加模式
docker run --name redis -d -p 16379:6379 -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis:/data redis redis-server /etc/redis/redis.conf --appendonly yes
安装Mysql
# 下载镜像
docker pull mysql
# 运行容器 注意改下用户名和密码,以及映射目录和端口
docker run --name=mysql1 --env=MYSQL_USER=xiaohei --env=MYSQL_PASSWORD=xiaohei --env=MYSQL_ROOT_PASSWORD=root_xiaohei --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --volume=/data/mysql/config:/main --volume=/data/mysql/data:/var/lib/mysql --volume=/var/lib/mysql --privileged -p 10123:3306 --expose=10123 --restart=always --runtime=runc --detach=true mysql --character-set-server=utf8 --collation-server=utf8_general_ci --default-authentication-plugin=mysql_native_password
安装Go应用
# 使用以下方式静态编译Linux平台amd64架构的可执行文件, 会生成一个可执行的文件 express_app
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o express-app main.go
创建目录 /data/express_docer
, 把上一步的可执行文件复制到当前文件夹,然后创建Dockerfile文件
FROM loads/alpine:3.8
LABEL maintainer="ergou.xu@xx.com"
###############################################################################
# INSTALLATION
###############################################################################
# 设置容器里的工作目录
WORKDIR /data/go/express
# 把当前目录下的内容都复制到容器工作目录
COPY . /data/go/express
# 给编译的程序增加可执行权限
RUN chmod +x /data/go/express/express-app
# 暴露8089端口
EXPOSE 8089
###############################################################################
# START
###############################################################################
ENTRYPOINT ["./express-app"]
另外我增加了.env
的环境变量配置文件,省事一些的话直接把整个项目目录映射进容器里的/data/go/express
目录下。
# 构建镜像文件,镜像名字是 express_go 上下文目录是当前目录也就是点
docker build -t express_go .
# 查看镜像是否生成成功
docker images
# 启动容器, 最后的参数是镜像名
docker run --name express_back -d -p 10023:8089 -v /data/xx/express_go/www/:/data/go/express express_go
Nginx代理配置
这里使用的是nginx做转发,需要增加nginx的配置文件 express.xx.com.443.conf
server {
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
fastcgi_buffers 8 128k;
send_timeout 60;
client_max_body_size 20M;
# 需要看自己服务nginx的映射端口
# 因为我本地的nginx也是容器,服务器的80映射到了nginx容器的8000端口
# 所以我这里需要监听8000
listen 8000;
server_name express.xx.com;
# 这里做https的转发
return 301 https://express.xx.com$request_uri;
}
# 这里配置https的相关
server {
listen 4430 ssl http2;
server_name express.xx.com;
# https需要的证书
ssl_certificate /certs/express.xx.com.pem;
ssl_certificate_key /certs/express.xx.com.key;
include /conf.d/ssl_params.conf;
include /conf.d/headers.conf;
location / {
# 把请求转发到go容器
proxy_pass http://172.16.0.11:10023;
include /conf.d/proxy-params.conf;
}
}
重启nginx服务,然后访问https://express.xx.com
即可。