Score:0

Add private GitHub repository "the right way" in dockerfile (w composer.json)

ธง ph

I'm trying to add my private GitHub repository, through the composer.json-file, while building a docker image. But I can't make it work no matter what I try.

I want the most simple approach possible, it doesn't have to be the most secure but at least acceptable. I'm hoping it's possible to do with a "Personal Access Token".

Here's my attempt;

FROM php:8-fpm

# Set working directory
WORKDIR /var/www

# Set args
ARG GIT_ACCESS_TOKEN
ARG GIT_PRIVATE_KEY
ARG GIT_HASH
ENV GIT_HASH=$GIT_HASH

# add credentials on build
#RUN touch ~/.composer/auth.json
RUN mkdir ~/.composer
RUN echo '{"github-oauth":{"github.com": "${GIT_ACCESS_TOKEN}"}}' > ~/.composer/auth.json

# Install dependencies
RUN apt-get update && apt-get install -y \
    nano \
    build-essential \
    default-mysql-client \
    locales \
    zip \
    libzip-dev \
    unzip \
    git \
    curl \
    libssl-dev \
    libonig-dev

# Install extensions
RUN docker-php-ext-install opcache pdo_mysql mbstring zip ftp mysqli bcmath

# GitHub access to LCMS
RUN git config --global url."https://${GIT_ACCESS_TOKEN}@github.com".insteadOf "ssh://[email protected]"

RUN mkdir -p ~/.ssh/ && \
    echo ${GIT_ACCESS_TOKEN} > ~/.ssh/id_rsa && \
    chmod -R 600 ~/.ssh/ && \
    ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts

# Install composer
# Copy composer.lock and composer.json
COPY ./web/composer.json /var/www/
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Install vendor dependencies through composer
RUN composer install

# Install opache settings for php
COPY ./web/nginx/php.ini $PHP_INI_DIR/conf.d/opcache.ini

# Copy existing application directory contents
COPY ./web /var/www

# Clean up
RUN apt-get remove -y git && apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Expose port 9000 and start php-fpm server
EXPOSE 9000

I'm always greeted with errors from GitHub. If I run the code above, I get this error;

> [11/14] RUN composer install:                                                                                    
#15 0.196 Do not run Composer as root/super user! See https://getcomposer.org/root for details                      
#15 0.226 No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
#15 0.226 Loading composer repositories with package information
#15 0.877 
#15 0.883                                                                                                                                           
#15 0.883   [RuntimeException]                                                                                                                      
#15 0.883   Failed to execute git clone --mirror -- '[email protected]/xxxxx' '/root/.composer/cache/vcs/git-github.com-xxxxxxx/'  
#15 0.883                                                                                                                                           
#15 0.883   Cloning into bare repository '/root/.composer/cache/vcs/git-github.com-xxxxxxx'...                                             
#15 0.883   Warning: Permanently added the RSA host key for IP address '140.82.121.3' to the list of known hosts.                                   
#15 0.883   Load key "/root/.ssh/id_rsa": invalid format                                                                                            
#15 0.883   [email protected]: Permission denied (publickey).                                                                                          
#15 0.883   fatal: Could not read from remote repository.                                                                                           
#15 0.883                                                                                                                                           
#15 0.883   Please make sure you have the correct access rights                                                                                     
#15 0.883   and the repository exists.

Anyone with suggestions?

in flag
โทเค็นการเข้าถึงไม่ใช่คีย์ ssh มีไว้เพื่อใช้เป็นรหัสผ่านใน http url (อ่านเอกสาร GitHub) แต่ฉันกังวลมากกว่าตรงที่ว่ากุญแจอยู่ในรูปภาพและทุกคนที่เข้าถึงรูปภาพสามารถอ่านได้
in flag
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#using-a-token-on-the-command-line
ph flag
แต่เนื่องจากสภาพแวดล้อมของฉันอยู่ใน AWS ecs ฉันจึงสามารถใช้ ssh-key ได้หรือไม่
in flag
คุณพลาดจุด คุณไม่สามารถใช้โทเค็นการเข้าถึงเป็นคีย์ SSH ควรจะใช้เป็นรหัสผ่านผ่าน https
Score:1
ธง in

โทเค็นการเข้าถึงส่วนบุคคลของคุณไม่ได้มีไว้เพื่อใช้เป็นคีย์ SSH แต่ใช้แทนรหัสผ่าน GitHub ส่วนตัวของคุณและสามารถใช้ได้กับการเชื่อมต่อ HTTPS เท่านั้น

Dockerfile ที่ใช้งานได้น้อยที่สุดจะเป็น:

จาก php:8-fpm

ARG GIT_ACCESS_TOKEN

รัน apt-get update && apt-get install -y git

RUN git โคลน https://yourusername:${GIT_ACCESS_TOKEN}@github.com/yourusername/yourrepo.git

จากนั้นคุณสามารถใช้ ARG บนบรรทัดคำสั่ง build:

นักเทียบท่า build --build-arg GIT_ACCESS_TOKEN="YOURLONGACCESSTOKEN"

แต่:

โทเค็นการเข้าถึงของคุณจะปรากฏแก่ทุกคนที่มีสิทธิ์เข้าถึงภาพของคุณ

สิ่งนี้ถูกบันทึกไว้ใน เอกสารประกอบไฟล์นักเทียบท่า:

คำเตือน:

ไม่แนะนำให้ใช้ตัวแปร build-time เพื่อส่งผ่านข้อมูลลับ เช่น คีย์ github, user credentials เป็นต้น ค่าตัวแปร build-time จะปรากฏแก่ผู้ใช้รูปภาพที่มี ประวัตินักเทียบท่า สั่งการ.

คุณควรใช้ก สร้างหลายขั้นตอน หรือใช้ที่ใหม่กว่า สร้างความลับ เพื่อป้องกันสิ่งนี้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา