新版博客SEO优化基本完成,新老博客内容正在整合中,保证每篇文章高质量。 SiteMap RSS Github
Docker+Git自动化部署Flask项目
嘉美伯爵   2019年9月16日 17:49   运维   Flask   130  

配置Git

项目结构

  • Dockerfile
FROM python:3.6

WORKDIR /data/wwwroot/deploy/tools

COPY requirements.txt ./

RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

COPY . .

CMD ["gunicorn", "app:app", "-c", "./gunicorn.conf"]
  • 构建镜像
sudo docker build -t 'tools:v1' .
  • 运行mysql镜像
sudo docker run --restart=always --name mysqldb -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=tools -d mysql:5.7 --character-set-server=utf8mb4 --max_allowed_packet=1024M --tmp_table_size=1024M --max_heap_table_size=1024M --innodb_log_file_size=512M --innodb_buffer_pool_size=1024M --innodb_log_buffer_size=512M  --skip-new
  • 运行tools镜像
docker run -d -p 8652:8652 --restart=always --name tools --link mysqldb:mb tools:v1

问题记录

  • remote: the input device is not a TTY
# 修改 post-receive 中的脚本,将 exec 后面的 -it 改成 -i
sudo docker exec -i tools /bin/bash -c ' cp -r tools/* ./ && rm -rf tools'
  • Got permission denied while trying to connect to the Docker daemon socket at....
# 修改 post-receive 中的脚本中执行docker的权限,由于是git用户,故加sudo
#!/bin/sh

cd /data/wwwroot/deploy/tools
chown -R git:git /data/wwwroot/deploy/tools/
# git clone /home/gitrepo/tools.git
unset GIT_DIR
git reset --hard
git fetch
git merge origin/master
sudo docker cp /data/wwwroot/deploy/tools/ tools:/data/wwwroot/deploy/tools
sudo docker exec -i tools /bin/bash -c ' cp -r tools/* ./ && rm -rf tools'
sudo docker restart tools
  • We trust you have received the usual lecture from the local System Administrator. It usually boils
# 修改git用户权限为 git ALL=(ALL) NOPASSWD: ALL
chmod u+w /etc/sudoers
vi /etc/sudoers
# 找到root ALL=(ALL) ALL,在下面添加git ALL=(ALL) NOPASSWD: ALL
chmod u-w /etc/sudoers
  • git push insufficient permission for adding an object to repository database
sudo chown -R git:git /home/gitrepo/tools.git

参考文档

docker 在容器外执行某个容器内的某个命令

用Docker部署Flask应用