-
[Docker] php, apache image 생성하기 #절망편오늘의 IT/Docker 2023. 1. 29. 01:07반응형
폴더 생성해주기
mkdir daejang
폴더 들어가서 Dockerfile 만들기
touch Dockerfile
Dockerfile 파일 만들기
일단 apache 먼저 설치 해줌
# Dockerfile FROM ubuntu:20.04 # MAINTAINER 명령어 docker에서 지원 안함 LABEL로 사용 LABEL maintainer="daejang" # 아파치 설치 RUN apt install apache2 -y ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_PID_FILE /var/run/apache2/apache2.pid EXPOSE 80 CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
hub.docker 사이트 로그인 및 image build [docker login 및 build]
docker login # docker build -t [tag] [dockerfile 파일 경로] docker build -t daejang-php8.2_apache2 .
빌드 할때 나온 에러 모음
1. WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
apt 명령어의 경우 사용자와의 interaction 에 중점을 둔 CLI 이기에 script 내에서 사용하기에 부적절하다는 에러로 apt-get 등의 명령어로 대체하여 사용하면 된다.
2. Unable to locate package apache2
우분투에서 패키지를 설치할때 위와같은 에러가 발생할 경우 해결방법
위 에러는 package 의 레포지토리가 정상적으로 접근이 안될 때 나오는 명령어 이기 때문에 패키지 레포지토리를 최신으로 만들어주는 apt update 명령어를 사용해주면 됩니다.
3. Geographic area 설정이 뜰 때
Dockerfile 스크립트 build 시에 해당 설정이 불가능 하기 때문에 2가지 해결 방법이 있다
ENV TZ=Asia/Seoul # 1. 명시적으로 timezone 설정 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV DEBIAN_FRONTEND=noninteractive # 2. 추가적인 창 비활성화
최종 build한 Dockerfile
# Dockerfile FROM ubuntu:20.04 # 명시적인 타임존 설정 ENV TZ=Asia/Seoul RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # MAINTAINER 명령어 docker에서 지원 안함 LABEL로 사용 LABEL maintainer="daejang" # 업데이트 RUN apt update # 아파치 설치 RUN apt-get install apache2 -y ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_PID_FILE /var/run/apache2/apache2.pid EXPOSE 80 CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
빌드 실행
docker run -d -p 80:80 daejang-php8.2_apache2
오류 #1
Error response from daemon: driver failed programming external connectivity on endpoint ~
외부로 오픈하는 포트가 겹쳐서 컨테이너가 실행이 제대로 안되는 오류
나 같은 경우에는 포트번호가 없어서 그냥 포트번호는 생략하고 다시 실행해봄
docker run daejang-php8.2_apache2
오류 #2
apache2: Could not reliably determine the server's fully qualified domain name
이후 shell이 멈췄고 다시 들어가려고 하니 권한 오류 남...
ssh 키 다시 등록하고 들어가보니
똑같은 container 2개 생겨 있음 포트번호 다른 걸로....
흑흑....망한건가.....
반응형'오늘의 IT > Docker' 카테고리의 다른 글
[Docker] image란? (0) 2023.01.28 [Docker] docker 정보 확인 및 container 생성/시작/정지 (0) 2023.01.25 [Docker] docker란? (0) 2023.01.22