# 使用 docker 部署基于 golang 的开源论坛 bbs-go {#使用-docker-部署基于-golang-的开源论坛-bbs-go}
本文讲述如何使用 docker 部署基于 golang 的开源论坛 bbs-go。
本文作为文章基于 golang 的开源论坛 bbs-go 的搭建步骤的补充,阅读本文前,请先阅读基于 golang 的开源论坛 bbs-go 的搭建步骤。
# 1. 搭建 docker 环境 {#_1-搭建-docker-环境}
阅读如下 2 篇文章即可搭建好 docker 环境:
安装 docker 服务
安装 docker-compose
# 2. docker 运行论坛的 server 模块 {#_2-docker-运行论坛的-server-模块}
# 2.1 编写 Dockerfile {#_2-1-编写-dockerfile}
参考如下 Dockerfile:
FROM alpine:3.9.4
MAINTAINER Wang Shibiao
#需要如下链接操作,否则运行程序会提示not found
RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
#修改镜像源为国内
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && apk update
#配置时区为中国
RUN apk add tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
# 拷贝程序
COPY ./bbs-go /root/
COPY ./bbs-go.pro.yaml /root/
# 容器启动后自动运行bbs服务
CMD ["/root/bbs-go", "--config", "/root/bbs-go.pro.yaml"]
# 2.2 编写 docker-compose.yml {#_2-2-编写-docker-compose-yml}
参考如下 docker-compose.yml:
version: "3"
services:
service:
build: .
container_name: forum-server
restart: always
volumes:
- /data/docker-container/forum-server/data:/data
ports:
- "8082:8082"
tty: true
# 2.3 准备程序 {#_2-3-准备程序}
准备编译好的程序 bbs-go 和配置文件 bbs-go.pro.yaml。
# 2.4 运行 docker 容器 {#_2-4-运行-docker-容器}
现在 dockerfile 所在目录的内容如下:
[root@VM-0-6-centos ~]# cd /data/dockerfile/forum-server/
[root@VM-0-6-centos forum-server]# ll
总用量 36976
-rwxr-xr-x 1 root root 37848299 11月 19 10:57 bbs-go
-rw-r--r-- 1 root root 1752 11月 19 10:57 bbs-go.pro.yaml
-rw-r--r-- 1 root root 214 11月 18 16:36 docker-compose.yml
-rw-r--r-- 1 root root 629 11月 19 10:59 Dockerfile
[root@VM-0-6-centos forum-server]#
在 dockerfile 所在目录执行命令docker-compose up -d --build
运行 docker 服务:
[root@VM-0-6-centos forum-server]# docker-compose up -d --build
Building service
Step 1/8 : FROM alpine:3.9.4
---> 055936d39205
Step 2/8 : MAINTAINER Wang Shibiao
---> Using cache
---> 2482b33fb48a
Step 3/8 : RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
---> Using cache
---> 5e4a03cdcd9e
Step 4/8 : RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && apk update
---> Using cache
---> e9cd4d038df8
Step 5/8 : RUN apk add tzdata && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
---> Using cache
---> 816557f74c0d
Step 6/8 : COPY ./bbs-go /root/
---> Using cache
---> 295388eab502
Step 7/8 : COPY ./bbs-go.pro.yaml /root/
---> Using cache
---> fbd78e420d4f
Step 8/8 : CMD ["/root/bbs-go", "--config", "/root/bbs-go.pro.yaml"]
---> Using cache
---> 29c02d7a8d5c
Successfully built 29c02d7a8d5c
Successfully tagged forum-server_service:latest
forum-server is up-to-date
[root@VM-0-6-centos forum-server]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d762e159688b forum-server_service "/root/bbs-go --conf..." 45 minutes ago Up 45 minutes 0.0.0.0:8082->8082/tcp forum-server
a64725aed557 mysql_mysql "docker-entrypoint.s..." 20 hours ago Up 20 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
4872b0c1e224 nginx_service "nginx -g 'daemon of..." 43 hours ago Up 20 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx
[root@VM-0-6-centos forum-server]#