뒤로가기

docker+php8+nginx

# Dockerfile for Ubuntu: Nginx + PHP 8.1 + Composer + SSH + systemd
FROM ubuntu:22.04

# 비대화형 모드 및 기본 환경변수 설정
#ENV LANG=en_GB.UTF-8
ENV TZ=Asia/Seoul
#ENV php_conf=/etc/php/8.1/fpm/php.ini

LABEL maintainer="jun2642@gmail.com" \
      title="docker utuntu + nginx + php8" \
      description="Ubuntu + Nginx + PHP 8.1 + Composer + SSH" \
      version="0.1"

# 타임존 설정
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# apt 소스 변경: vim 설치 후, 기본 소스를 ftp.daumkakao.com으로 변경
RUN apt-get update && \
    apt-get install -y vim && \
    sed -i 's/archive.ubuntu.com/ftp.daumkakao.com/g' /etc/apt/sources.list && \
    apt-get update

# 시스템 업데이트 및 필수 패키지 설치
RUN apt-get install -y --no-install-recommends \
      systemd \
      nginx \
      php8.1 \
      php8.1-cli \
      php8.1-fpm \
      php8.1-redis \
      php8.1-intl \
      php8.1-gd \
      php8.1-mbstring \
      php8.1-mysql \
      php8.1-xml \
      php8.1-zip \
      php8.1-bcmath \
      php8.1-soap \
      php8.1-ldap \
      php8.1-xdebug \
      unzip \
      curl \
      openssh-server && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

# SSH 기본 설정 (필요 시 추가 설정 가능)
RUN mkdir /var/run/sshd

# Composer 설치 (SSL 검증 비활성화 옵션 -k 적용)
RUN curl -k -sS https://getcomposer.org/installer -o composer-setup.php && \
    HASH="$(curl -k -sS https://composer.github.io/installer.sig)" && \
    php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); exit(1); } echo PHP_EOL;" && \
    php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
    rm composer-setup.php

# systemd 환경에서 Nginx, PHP8.1-FPM, SSH가 자동으로 시작되도록 서비스 활성화
RUN systemctl enable nginx && \
    systemctl enable php8.1-fpm && \
    systemctl enable ssh

# 필요한 포트 노출 (HTTP, HTTPS, SSH 및 기타 지정 포트)
EXPOSE 80 443 22 3000

CMD ["/bin/bash"]
#docker-compose.yml
version: '3'
services:
  web:
    container_name: blog
    privileged: true
    build:
      context: .
      dockerfile: ./Dockerfile
    stdin_open: true
    tty: true
    ports:
      - "10080:80"
      - "10443:443"
      - "10022:22"
      - "10030:3000"
    volumes:
      - ./www:/var/www
      - ./home:/home