项目背景:Beego+MySQL
1 后台启动MySQL
这里不需要指定映射端口,因为是让另一个容器访问,可以直接link。但是需要设置密码,-e设置环境变量。这里设置了别名mysql。
sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
2 导入sql文件
将虚拟机目录中的数据库文件(我的是test.sql)导入mysql容器
sudo docker cp ./test.sql mysql:/test.sql
进入容器
sudo docker exec -it mysql /bin/bash
进入MySQL导入文件
mysql -uroot -p123456
mysql> source test.sql
3 修改数据库配置
项目中关于MySQL的配置需要用环境变量MYSQL_HOST替代MySQL的ip,下面会用到。
项目跑的5000端口。
4 构建Dockefile
接下来就是在项目的根目录构建Dockerfile。
我的Dockerfile如下:
FROM golang:1.10.7
COPY . /go/src/beego项目/1/
WORKDIR /go/src/beego项目/1
RUN go get github.com/astaxie/beego && go get github.com/beego/bee && go get github.com/go-sql-driver/mysql
EXPOSE 5000
CMD ["bee", "run"]
5 生成镜像文件
sudo docker build -t lesroad/testblog .
6 运行容器
sudo docker run -d --name testblog -p 6000:5000 --link mysql -e MYSQL_HOST=mysql lesroad/testblog
如果没有端口映射的话只能在容器中访问而不能在虚拟机中访问
link关联使得可以用name代替ip
7 浏览器访问
docker ps 这时候应该能看见mysql和testblog两个容器都在运行
输入curl 127.0.0.1:6000就可以看到页面啦