기본이 되는 이미지를 지정 ➜ 특정 패키지 설치/ 파일 추가해서 이미지 빌드
ex) docker에서 django 서비스를 배포하는 경우
기본이 되는 python 이미지를 불러온 후 ➜ pip install django로 장고 패키지를 설치해서 이미지를 빌드함
FROM httpd:latest
COPY ./index.html /usr/local/apache2/htdocs/index.html
➜ 현재경로의 index.html(호스트)을 다음 경로(컨테이너)의 html파일로 복사하겠다(컨테이너 내부에 기존 html이 없으면 생성, 있으면 호스트로 덮어쓰기됨)
version: '3.8' # docker-compose.yml에 사용될 문법 버전을 정의합니다.
services:
example:
container_name: example
build: .
ports:
- 80:80
restart: always
➜ image 대신 build로 현재 경로(docker-compose.yml기준)의 Dockerfile로 이미지를 빌드해서 사용
➜ Dockerfile 내용들 실행돼서 컨테이너 생성됨
entrypoint: 컨테이너가 생성될 때 기본적으로 실행할 명령어 지정하는 옵션
Dockerfile과 docker-compose.yml애서 모두 작성 가능하지만 둘 다 있으면 docker-compose.yml의 내용으로 실행됨
FROM python:3.9.15
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN mkdir /app/
WORKDIR /app/
COPY ./main.py /app/
# 파이썬 파일을 실행시킬 수 있도록 컨테이너에 파일을 넣어줌
➜ 사용된 ENV는 파이썬 이미지 사용시 필수
version: '3.8'
services:
example:
container_name: example
build: .
entrypoint: sh -c "python3 main.py"
# 컨테이너 안의 파이썬 파일을 실행시킬 수 있도록 엔트리 포인트를 지정해줌
restart: always
포트번호(:기준 앞부분)/ 서비스 이름등이 중복되지 않도록 설정
version: '3.8'
services:
example1:
container_name: exmaple1
image: "httpd:latest"
ports:
-80:80
restart: always
example2:
container_name: example2
build: .
entrypoint: sh -c "python3 main.py"
restart: always
depends_on:
- example2
def solution(price, money, count):
answer = 0
for cnt in range(1,count+1):
answer += price*cnt
if money-answer>=0:
return 0
else:
return answer-money
으 아직도 range 쓰는 게 헷갈린다니
range index는 시작이 0이고 마지막이 n-1이다.
def solution(price, money, count):
return max(0,price*(count+1)*count//2-money)
# 등차수열 공식 n(n+1)//2 오랜만이야...
➜ 와 진짜 천재 아니냐고 max를 쓸 생각을 해...????
return answer-money if answer-money >0 else 0
리턴 뒤에 조건문을 쓸 수도 있나보당 와우