
Dockerfile : 컴퓨터에서 돌아가는 앱을 만들기 위한 레시피, Docker Image를 빌드하기 위한 파일Docker Image : 앱을 실행하는데 필요한 모든 것을 담고 있다.Dockerfile 덕분에 앱을 만드는 일이 더 쉽고, 누구나 똑같은 결과를 얻을 수 있다. 컴퓨터에서 앱을 실행하는 일이 마치 레시피대로 요리하는 것처럼 간단.
FROM : 베이스 이미지를 선택MAINTAINER : 이미지를 만든 사람의 정보 입력RUN : 이미지에 명령을 실행하여 파일을 추가하거나 삭제COPY : 파일을 이미지에 복사EXPOSE : 컨테이너가 노출할 포트 설정CMD : 컨테이너가 실행될 때 실행할 명령 설정# Dockerfile
FROM ubuntu:latest
MAINTAINER Your Name <your-email@example.com>
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Docker CLI 사용해서 명령어 실행#현재 디렉토리에서 Dockerfile 기반으로 my-nginx:latest라는 이름의 Docker 이미지를 생성하는 예제
docker buildx build -t my-nginx:latest .
docker build -t my-nginx:latest . # 위 명령이 실행되지 않는 경우 실행
#my-nginx:latest 이미지 기반으로 컨테이너를 실행하고, 80번 포트를 호스트 머신의 80번 포트로 맵핑
docker run -d -p 80:80 my-nginx:latest
# my-nginx라는 이름의 컨테이너 종료
docker stop my-nginx

FROM ubuntu:22.04
MAINTAINER naebaecaem <nbcamp@spartacoding.co>
LABEL purpos='nginx test'
RUN apt update && apt upgrade -y && autoremove && apt autoclean
RUN apt install openjdk-21-jdk
CMD ["nginx", "-g", "daemon off;"]
ENTRYPOINT ["npm", "start"]
ENV STAGE staging
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
WORKDIR /app
COPY index.html /usr/share/nginx/html
RUN ["useradd", "user"]
USER user
RUN ["/bin/bash, "-c", "ls"]
EXPOSE 80
EXPOSE 443
nginx:latset 이미지 사용하면 된다.# Dockerfile
FROM ubuntu:22.04
MAINTAINER your-name <your-email@example.com>
LABEL purpose=Web Server
# nginx 패키지 설치
RUN apt-get update && apt-get install -y nginx
# nginx 설정 파일 복사
COPY nginx.conf /etc/nginx/nginx.conf
# Nginx 실행
CMD ["nginx", "-g", "daemon off;"]
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
}
출처 : [TeamSparta]