일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- piplining
- jwt 표준
- docker
- JPA
- ai agent
- 몽고 인덱스
- 완전탐색
- langgraph
- 결제서비스
- BFS
- 구현
- 크롤링
- 이분탐색
- 아키텍쳐 개선
- 추천 검색 기능
- AWS
- 백준
- 레디스 동시성
- next-stock
- 쿠키
- 검색어 추천
- 디버깅
- gRPC
- 셀러리
- 누적합
- ipo 매매자동화
- spring event
- 프로그래머스
- 트랜잭샨
- 카카오
- Today
- Total
코딩관계론
[Docker] ros:melodic을 python3.7버전으로 업그레이드(도커 파일 있음) 본문
프로젝트를 하는 중 python3.7에서 지원하는 pkg를 사용해야만 하는 상황에 직면했다. 우리는 build된 docker 이미지만 있는 상황이었다.
먼저 ros version을 확인하기 위해 docker inspect 명령어를 이용해 조사헸더니 ros:melodic버전이었다.
따라서 docker hub에서 제공하는 공식 ros:melodic을 이용하기로 했다. 특이한 점은 ros:melodic의 기본 파이썬 버전이 아니라 3.7파이썬을 사용하기 위해서 python3.7을 다운로드해준다.
FROM osrf/ros:melodic-desktop-full-bionic
RUN apt-get update && apt-get install -y python3.7 python3-pip
python 명령어가 3.7버전으로 실행 할 수 있도록 하기 위해서 모든 심볼릭 링크 변경해준다
이젠 ros가 python3의 site-pkg에 다시 설치되면 되는데 아래의 두 명령어를 사용하면 간단하게 해결할 수 있다. 모종의 이유에서 rosbridge-server는 자동으로 설치되지 않아 직접 설치하는 방식으로 변경했다.
RUN apt install -y python3-pip python3-all-dev python3-rospkg
RUN apt install -y ros-melodic-desktop-full --fix-missing
RUN apt-get install -y ros-melodic-rosbridge-server
다음으로 pip freeze로 설치된 패키지를 추출했다.해당하는 패키지들을 설치하도록 진행했다.
python3 -m pip freeze > docker-requirement.txt
COPY ./docker-requirements.txt .
RUN python3 -m pip install -r docker-requirements.txt
엄청난 꿀팀은 패키지 설치하는 부분을 맨 밑으로 옮기는 것이다. 왜냐하면 파이썬3.7에서 지원하는 버전으로 업그레이드를 해야 하기 떄문에 build가정에서 실패가 난다. 해당 명령어가 상위에 위치되어 있다면 파일의 수정 후 build하는 과정으로 인해 밑으로는 캐시를 쓸 수 없기 때문이다.
-- no-cache--build start
COPY ./docker-requirements.txt .
RUN python3 -m pip install -r docker-requirements.txt
- no-cache--build on-going
하지만 해당 구문이 최하위로 가게 된다면 해당 부분만 --no-cache로 진행될 것이다
--build - using - cache
--build - using - cache
--build - using - cache
-- no-cache--build start
COPY ./docker-requirements.txt .
RUN python3 -m pip install -r docker-requirements.txt
- no-cache--build on-going
최종 완성된 도커 파일입니다.
FROM osrf/ros:melodic-desktop-full-bionic
RUN apt-get update && apt-get install -y python3.7 python3-pip
RUN python3.7 -m pip install pip
RUN python3 -m pip install --upgrade pip
RUN rm /usr/bin/python
RUN rm /usr/bin/python3
#Add default symbolic link
RUN ln -s /usr/bin/python3.7 /usr/bin/python3
RUN ln -s /usr/bin/python3.7 /usr/bin/python
RUN apt-get update && apt-get install -y \
build-essential \
libsm6 \
libglib2.0-0 \
libxrender1 \
libxext6 \
python3.7-dev \
build-essential \
libsnappy-dev \
aptitude \
vim
#For ROS
RUN apt install -y python3-pip python3-all-dev python3-rospkg
RUN apt install -y ros-melodic-desktop-full --fix-missing
RUN apt-get install -y ros-melodic-rosbridge-server
RUN python3 -m pip install --upgrade --ignore-installed pip setuptools
#For package
COPY ./docker-requirements.txt .
RUN python3 -m pip install -r docker-requirements.txt
'TroubleShooting' 카테고리의 다른 글
telegram.error.NetworkErrorAsyncIO Event Loop Closed 오류 (0) | 2023.08.12 |
---|---|
Email attachment received as 'noname' 해결하기 (0) | 2023.05.09 |
OAuth2.0이란 (1) | 2023.04.15 |
테스트 커버리지를 올리기 위한 노력 (0) | 2023.04.14 |
CSRF verification failed. Request aborted는 왜 발생할까? (0) | 2023.04.04 |