gitlab ci & docker compose 踩坑记

本文详细记录了作者在使用gitlab CI/CD进行远程服务器自动部署过程中遇到的SSH连接问题和docker-compose操作难题,包括解决伪终端分配和脚本执行限制的方法,适合DevOps开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近因为需要使用gitlab上的CI/CD进行自动部署,涉及到了使用docker-compose搭建的远程服务器环境,踩了很多坑,特此记录一下。

.git-ci.yml 样例

stages: # 分段
  - build
  - deploy
  - restart
  - stop


restart-server-dev-job:
  stage: restart
  script:
    - echo "=============== 停止服务器  ==============="
    - chmod a+x ./stop_server_dev.sh
    - ./stop_server_dev.sh
    - echo "=============== 执行结束 ==================="
    - echo "=============== 启动服务器  ==============="
    - chmod a+x ./deploy_dev.sh
    - ./deploy_dev.sh
    - echo "=============== 执行结束 ==================="
  when: manual  # 手动启动
  only:
    - dev  # 使用git上哪个branch

使用sh执行命令

#!/bin/bash
ssh -tt user@server_ip<< remotessh
cd ./path_to_file/
docker-compose exec sts bash  # 进入docker
python --version
python script.py
exit
remotessh
  1. 问题一:Pseudo-terminal will not be allocated because stdin is not a terminal
    解决方法:使用 -tt 参数

ssh 参数:

  • -t:强制配置 pseudo-tty
  • -T:禁止分配伪终端
  1. 问题二:直接在yml中使用 ssh -tt 后只执行第一条命令
    解决方法:使用sh文件存储所有命令及使用remotessh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值