微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 dockerized Jenkins 容器中使用 docker-compose 时“无法打开错误”

如何解决在 dockerized Jenkins 容器中使用 docker-compose 时“无法打开错误”

我想在 dockerized jenkins 容器中运行 docker-compose。 但是我的 docker-compose 文件在我的本地工作但是当我尝试在 jenkins 中进行 CD 时它不起作用 出现这个错误
[0m[32mgunicorn-backend |[0m sh: 0: Can't open /code/gunicorn/gunicorn_start.sh

#!groovy
node {
  environment {
    Django_secret_key = credentials('Django_secret_key')
  }
  stage("Checkout") {
    checkout scm
  }

  stage('Stop prevIoUs containers') {
    dir('backend') {
       withEnv(["PATH=$PATH:/usr/local/bin"]){
        sh """
            docker-compose -p LBS_Platform down
        """
       }
    }
  }
  stage('Run current containers') {
    dir('backend') {
       withEnv(["PATH=$PATH:/usr/local/bin"]){
        sh """
            docker-compose -p LBS_Platform up --build
        """
       }
    }
  }
}
  • 詹金斯码头工人,码头工人组合
# dockerfile
FROM jenkins/jenkins:lts

ARG HOST_UID=1004
ARG HOST_GID=999

USER root
RUN curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
RUN curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ; chmod +x /usr/local/bin/docker-compose

RUN usermod -u $HOST_UID jenkins
RUN groupmod -g $HOST_GID docker
RUN usermod -aG docker jenkins

USER jenkins
# docker-compose file
version: "3"

services:
  jenkins:
    privileged: true
    build:
      context: ./
    container_name: jenkins
    restart: always
    user: root
    ports:
      - 8083:8080
      - 50003:50000
    expose:
      - "8080"
      - "50000"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./jenkins_home:/var/jenkins_home"
    environment:
      TZ: "Asia/SEOul"
volumes:
  jenkins_home:
    driver: local
  • docker-compose 我想在 jenkins coniatiner 上运行什么
# dockerfile
FROM python:3.9
ENV PYTHONUNBUFFERED 1

RUN apt-get -y update 

ARG Django_secret_key
ENV Django_secret_key $Django_secret_key
ENV BOARD_DEBUG 1

# 유저,그룹 나중에 수정 Todo
# the user to run as
ENV USER root

# how many worker processes should Gunicorn spawn
ENV NUM_WORKERS 3

# which settings file should Django use
ENV DJANGO_SETTINGS_MODULE backend.settings

# Wsgi module name
ENV DJANGO_Wsgi_MODULE backend.wsgi

ENV PORT 8000

RUN echo "Starting $NAME as $(whoami)"

RUN mkdir /code

workdir /code
copY . /code/

RUN apt-get update \
    && DEBIAN_FRONTEND=noninteractive apt-get install -y netcat

RUN chmod 755 /code/gunicorn/gunicorn_start.sh

ENTRYPOINT ["sh","/code/gunicorn/gunicorn_start.sh"]
# docker-compose file
networks:
  app-tier:
    driver: bridge

services:
  gunicorn-backend:
    restart: always
    container_name: gunicorn-backend
    build:
      context: .
      args:
        Django_secret_key: "${Django_secret_key}"
    command: bash -c "pipenv run python manage.py runserver 0.0.0.0:8000"
    volumes:
      - .:/code
    networks:
      - app-tier
    ports:
      - "8000:8000"

  Nginx-backend:
    restart: always
    container_name: Nginx-backend
    image: Nginx:latest
    volumes:
      - ./Nginx/config:/etc/Nginx/conf.d
      - ./Nginx/logs:/var/backend-logs
    expose:
      - "80"
      - "443"
    ports:
      - "80:80"
      - "443:443"
    networks:
      - app-tier
    depends_on:
      - gunicorn-backend
    environment:
      - Nginx_HOST=0.0.0.0
      - Nginx_PORT=80
# gunicorn/gunicorn_start.sh
#!/bin/bash
# Name of the application
NAME="backend"

# https://stackoverflow.com/questions/4774054/reliable-way-for-a-bash-script-to-get-the-full-path-to-itself
SCRIPT_PATH=$(dirname `which $0`)

# Django project directory
# . 경로
DJANGODIR=$SCRIPT_PATH

# /Users/Han/programming/DjangoCRUDBoard
PARENT_PATH=$(cd $SCRIPT_PATH ; cd .. ; pwd)

# we will communicte using this unix socket
SOCKFILE=$PARENT_PATH/run/gunicorn.sock

echo $PARENT_PATH

# Activate the virtual environment
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

cd $PARENT_PATH

# # DB 연결될때까지 블로킹 (미그레이션은 DB가 연결되어야 가능하다)
# while ! nc -z database 5432; do sleep 1; done;


pip install --upgrade pip
pip install pipenv
pipenv install
pipenv run python manage.py makemigrations
pipenv run python manage.py migrate

# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
# pipenv 사용
exec pipenv run gunicorn ${DJANGO_Wsgi_MODULE}:application \
-b 0.0.0.0:$PORT \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-

docker 和 docker-compose 在 jenkins 容器上工作,但我不明白为什么 [0m[32mgunicorn-backend |[0m sh: 0: Can't open /code/gunicorn/gunicorn_start.sh
这个错误显示.....

有没有办法解决这个问题?!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。