Dockerfile 생성기

Dockerfile 생성기

앱 설정

다섯 가지 스택 중 하나를 선택하고 앱을 실제로 시작하는 파일이나 패키지를 입력하세요.

PHP-FPM은 HTTP가 아닌 FastCGI를 내부 TCP 포트 9000에서 제공합니다. 사설 네트워크에서 FastCGI를 지원하는 웹 서버에 연결하세요. 이 포트를 인터넷에 게시하지 마세요.

생성된 파일 검토

Node.js, Python, PHP-FPM, Go 또는 Rust 프로젝트용 Dockerfile과 이에 맞는 .dockerignore를 만듭니다. 스택을 선택하고 앱이 실제로 사용하는 경로나 바이너리를 입력하세요. 시작 명령을 추측하지 않습니다. 결과물은 명시된 매니페스트 파일이 있는 일반적인 프로젝트에서 빌드해 볼 수 있는 출발점입니다. 저장소에 추가하기 전에 두 파일을 모두 읽어 보세요.

파일 만들고 확인하기

  1. 1

    스택과 시작 대상 선택

    Node.js와 Python은 상대 스크립트 경로, Go는 패키지 경로, Rust는 Cargo 바이너리 이름을 입력합니다. PHP-FPM은 고정된 시작 명령을 사용합니다.

  2. 2

    작업 디렉터리와 내부 포트 설정

    /app 또는 /srv/app처럼 지원되는 앱 경로를 선택하세요. EXPOSE의 포트는 기록용이므로 앱이 해당 포트에서 실제로 수신해야 합니다. PHP-FPM은 내부 FastCGI 포트 9000을 사용합니다.

  3. 3

    두 파일 검토

    Dockerfile과 .dockerignore를 함께 읽어 보세요. 매니페스트 이름, 시작 대상, 실행 권한, 프로젝트에 필요한 네이티브 시스템 의존성을 확인하세요.

  4. 4

    복사 또는 다운로드

    ZIP을 다운로드해 두 파일을 Docker 빌드 컨텍스트의 루트에 압축 해제하거나, 각 파일을 복사해 Dockerfile과 .dockerignore라는 이름으로 저장하세요. 그런 다음 실제 앱으로 컨테이너를 빌드하고 테스트하세요.

프로젝트에 실제로 있는 시작 대상 선택하기

이 생성기는 저장소를 검사할 수 없습니다. 입력한 스택, 시작 대상, 작업 디렉터리, 포트를 사용합니다. Node.js 앱에는 JavaScript 시작 파일과 npm 잠금 파일, Python 앱에는 스크립트와 requirements.txt, Go 앱에는 go.mod 모듈과 패키지 경로, Rust 앱에는 Cargo 프로젝트와 바이너리 이름이 필요합니다. PHP-FPM은 다릅니다. HTTP 서버가 아니라 FastCGI 프로세스를 시작합니다. Nginx처럼 FastCGI를 지원하는 웹 서버를 사설 컨테이너 네트워크에서 앞단에 두세요. PHP 이미지는 내부 포트 9000에서 수신합니다. 이 FastCGI 포트를 인터넷에 게시하지 마세요.

스택 지정할 시작 대상 확인할 프로젝트 파일
Node.js server.js 같은 상대 JavaScript 경로 package.json, package-lock.json, 시작 파일
Python app.py 같은 상대 Python 경로 requirements.txt, 시작 파일
PHP-FPM 고정된 php-fpm 프로세스 PHP 소스와 별도의 FastCGI 웹 서버
Go . 또는 ./cmd/server 같은 패키지 경로 go.mod와 해당 패키지의 소스
Rust Cargo 바이너리 이름 Cargo.toml, Cargo.lock, 지정한 바이너리 대상

생성되는 파일의 역할

WORKDIR은 이미지 안에서 프로세스의 작업 디렉터리를 정합니다. 입력란은 /app, /srv/app, /opt/app, /workspace, /usr/src/app, /var/www 아래의 앱 경로를 받고, /root 같은 시스템 경로나 다른 Dockerfile 명령으로 바뀔 수 있는 문자는 거부합니다. EXPOSE는 컨테이너 포트를 기록할 뿐 호스트 방화벽을 열거나 앱을 수신 상태로 만들지 않습니다. 생성된 .dockerignore는 흔한 로컬 의존성 디렉터리, 버전 관리 데이터, 루트 또는 하위 폴더의 .env 파일을 빌드 컨텍스트에서 제외합니다. 빌드 전에 읽어 보고 프로젝트에 필요한 파일이 규칙에 걸리면 조정하세요. 소스, ARG, ENV에 비밀 정보를 포함하지 마세요.

컴파일되는 Go와 Rust 프로젝트는 빌드 단계와 실행 단계를 분리하므로 최종 이미지에 컴파일러 도구 모음이 들어가지 않습니다. Node.js와 Python 변형은 선언된 의존성을 설치하고 PHP-FPM 변형은 FastCGI 서비스를 시작합니다. 컨테이너 설정만으로 실제 프로젝트의 빌드, 시작, 상태 확인, 예상 경로의 응답, 안전한 배포를 보장할 수 없습니다. 프레임워크, 네이티브 확장, 에셋 빌드, 파일 권한에 따라 추가 단계가 필요할 수 있습니다. 레이어 순서와 제외 파일 동작은 Docker의 빌드 모범 사례와 빌드 컨텍스트 안내를 참고하세요.

실제 앱으로 검증하기

ZIP을 빌드 컨텍스트의 루트에 압축 해제해 파일 이름을 정확히 Dockerfile과 .dockerignore로 유지하거나, 각 파일을 복사해 그 이름으로 저장하세요. Docker 버전에서 지원한다면 docker build --check .를 실행한 후 docker build -t my-app .를 실행하세요. 테스트 환경에서 이미지를 시작하고 실제 시작 명령과 경로를 확인하세요. HTTP 스택은 필요한 컨테이너 포트만 매핑하고 응답을 확인하세요. PHP-FPM은 포트 9000을 게시하지 말고 사설 FastCGI 네트워크 연결을 사용하세요. 프로덕션 배포 전에는 기본 이미지의 최신 패치와 의존성 잠금 파일을 검토하세요.

자주 묻는 질문

아니요. 선택한 스택과 시작 대상을 위한 일반적인 시작 파일입니다. 실제 의존성 파일, 네이티브 패키지, 에셋 빌드, 권한, 시작 동작, 보안 요구사항을 확인하세요. 배포 전에 프로젝트로 이미지를 빌드하고 실행해 보세요.

아니요. EXPOSE는 컨테이너 포트를 기록합니다. 앱이 그 포트에서 수신해야 하며, 호스트 매핑은 별도 실행 설정에서 제어합니다. PHP-FPM은 HTTP가 아닌 FastCGI를 사용하므로 포트 9000은 지원 웹 서버 뒤의 사설 컨테이너 네트워크에 두세요.

이 파일은 흔한 로컬 의존성, Git 데이터, 환경 파일을 Docker 빌드 컨텍스트에서 제외합니다. ZIP에서도 파일 이름의 맨 앞 점이 유지됩니다. 두 파일을 빌드 컨텍스트의 루트에 압축 해제한 뒤, 필요한 빌드 파일이 제외되지 않도록 프로젝트에 맞춰 각 규칙을 확인하세요.

아니요. 선택한 스택, 시작 대상, 작업 디렉터리, 포트는 결과 페이지 URL에 포함되며 파일을 렌더링할 때 이 사이트에 전달됩니다. 비밀 정보나 비공개 저장소 경로를 입력하지 마세요. 이 도구는 소스 코드를 업로드하거나 저장소를 검사하지 않습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다