Docker 컨테이너에서 Selenium 설정 및 Amazon ECR에서 이미지 푸시

7394 단어
개요: Docker Container에서 헤드리스 모드 셀레늄을 실행한 다음 Amazon ECR에서 이미지를 푸시합니다.

Amazon ECR이란 무엇입니까?
Amazon Elastic Container Registry(ECR)는 컨테이너 이미지를 쉽게 저장, 공유 및 배포할 수 있는 완전 관리형 Docker 컨테이너 레지스트리입니다.

도커 컨테이너란?
Docker 컨테이너 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같이 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 가벼운 독립 실행형 실행 소프트웨어 패키지입니다.

파일 구조



── /MyFolder/               # root folder
  ├── /main_test.py         # source code main test
  ├── /requirements.txt     # dependencies
  └── /Dockerfile           # docker commands

암호



내부에 다음을 복사합니다main_test.py.

import unittest
from selenium import webdriver
from time import sleep


class app_test_case(unittest.TestCase):


    def setUp(self):
        chromeOptions = webdriver.ChromeOptions()
        driver_path = '/usr/local/bin/chromedriver'
        chromeOptions.add_argument('--headless')
        chromeOptions.add_argument('--disable-gpu')
        chromeOptions.add_argument('--no-sandbox')


        self.driver = webdriver.Chrome(driver_path, chrome_options=chromeOptions)
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
        path = 'https://www.google.com/'
        self.base_url = path


    def test_i_d_e_script1(self):
        driver = self.driver
        driver.get(self.base_url)

        get_title = driver.title
        print(get_title, "  ", len(get_title))


    def tearDown(self):
        sleep(5)
        self.driver.quit()


if __name__ == "__main__":
    unittest.main()


내부에 다음을 복사합니다requirements.txt.

selenium==3.12.0
ipython==7.0.1


내부에 다음을 복사합니다Dockerfile.

FROM python:3


WORKDIR /srv


ADD . /srv
RUN apt-get -y update
RUN pip install --upgrade pip
RUN apt-get install zip -y
RUn apt-get install unzip -y


RUN pip install -r requirements.txt


# Install chromedriver
RUN wget -N https://chromedriver.storage.googleapis.com/72.0.3626.69/chromedriver_linux64.zip -P ~/
RUN unzip ~/chromedriver_linux64.zip -d ~/
RUN rm ~/chromedriver_linux64.zip
RUN mv -f ~/chromedriver /usr/local/bin/chromedriver
RUN chown root:root /usr/local/bin/chromedriver
RUN chmod 0755 /usr/local/bin/chromedriver


# Install chrome broswer
RUN curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
RUN apt-get -y update
RUN apt-get -y install google-chrome-stable


CMD ["python", "main_test.py"]


Dockerfile은 Docker 이미지를 빌드하는 파일입니다. 이미지에는 Python 자체를 포함하여 애플리케이션에 필요한 모든 종속성이 포함되어 있습니다.

새 Docker 이미지 빌드 및 실행



Dockerfile과 모든 필수 구성 파일이 생성되면 이제 새 도커 이미지를 빌드할 수 있습니다.

$ docker build -t myapp .




생성된 이미지 확인

$ docker images




이미지 실행

$ docker run myapp


출력은 다음과 같아야 합니다.



Amazon ECR에서 이미지 푸시



1단계. 이미지를 푸시하려는 Amazon ECR 레지스트리에 대해 Docker 클라이언트 인증

$ aws ecr get-login --region region --no-include-email


2단계. docker 로그인 명령을 복사하여 터미널에 붙여넣어 Docker CLI를 레지스트리에 인증합니다.

3단계. 사용할 Amazon ECR 레지스트리, 리포지토리 및 선택적 이미지 태그 이름 조합으로 이미지에 태그를 지정합니다. 레지스트리 형식: docker tag image_id aws_account_id.dkr.ecr.region.amazonaws.com/myapp
$ docker tag image_id aws_account_id.dkr.ecr.region.amazonaws.com/myapp


(참고: 먼저 ECR에서 리포지토리를 생성해야 합니다.)



4단계. docker push 명령을 사용하여 이미지를 푸시합니다. 레지스트리 형식은 다음과 같습니다docker tag image_id aws_account_id.dkr.ecr.region.amazonaws.com/myapp.

$ docker push aws_account_id.dkr.ecr.region.amazonaws.com/myapp


링크드인
이메일: [email protected]

좋은 웹페이지 즐겨찾기