记一次 Dockerfile 编写
Contents
今天给之前的信息收集平台写个 Dockerfile,好久没写,踩了点坑记录一下。
架构是 vue+beego+mysql,vue 打包后就不需要再开启服务。
docker常用命令
列表
1 2 3 |
docker ps docker ps -a docker images |
打包、启动、进入
1 2 3 4 |
docker build -t go-moby:1 . docker run -itd -p 8081:8081 go-moby:1 docker exec -it 838c bash docker exec -it mysql-moby bash |
日志
1
|
docker logs -f 838c |
停止、删除操作
1 2 3 |
docker stop $(docker ps -q) docker rm $(docker ps -aq) 1 docker rmi -f $(docker images -qa) |
目录结构
|
|
mysql
简单启动,很方便的启动一个 mysql
1
|
docker run -itd --name mysql-moby -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql |
docker-compose 启动,更加自动化
docker-compose.yml
|
|
- ./mysql/init:/docker-entrypoint-initdb.d/放初始化的sql文件
因为另一个 web 容器需要访问该容器,在初始化 sql 中需要设置允许其他 IP 连接数据库。
1 2 3 |
use mysql; update user set host = '%' where user = 'root'; flush privileges; |
web 中配置数据库地址为container_name,解决容器内网IP变化的情况
web
beego 可以打包成二进制文件方便部署。
Dockerfile
|
|
注意要切换下WORKDIR
默认在/会出现
1
|
Handler crashed with error can't find templatefile in the path:views/index.html |
docker-compose.yml
|
|
1、配置 depends_on 为前面的 db。
2、beego 启动时会先初始化数据库连接,连接失败直接报错,而 docker-compose 启动的时候 mysql 比较慢,因此增加了延时确保初始化时能连上数据库。
3、每次修改 web 文件需要删除镜像重新生成。
启动
1
|
docker-compose up |

Author niudaii
LastMod 2021-10-07