> 백엔드 개발 > PHP 튜토리얼 > Docker를 사용하여 PHP 애플리케이션을 배포하고 관리하는 방법

Docker를 사용하여 PHP 애플리케이션을 배포하고 관리하는 방법

王林
풀어 주다: 2023-08-02 19:38:02
원래의
1636명이 탐색했습니다.

Docker를 사용하여 PHP 애플리케이션을 배포하고 관리하는 방법

소개:
오늘날의 클라우드 컴퓨팅 시대에 컨테이너화 기술은 점점 더 대중화되고 있습니다. 그중 선두주자인 Docker는 이미 대부분의 개발자가 선택한 컨테이너화 솔루션이 되었습니다. 이 문서에서는 Docker를 사용하여 PHP 애플리케이션을 배포하고 관리하여 애플리케이션을 보다 효율적으로 개발하고 제공하는 방법을 소개합니다.

1. Docker 및 Docker Compose 설치
먼저 로컬 환경에 Docker를 설치해야 합니다. 운영 체제 버전에 따른 공식 문서에 따라 설치하십시오: https://docs.docker.com/install/

설치가 완료된 후 Docker Compose도 설치해야 합니다. 이는 여러 애플리케이션을 포함하는 애플리케이션을 관리하는 데 도움이 됩니다. 컨테이너. 마찬가지로 공식 문서(https://docs.docker.com/compose/install/

)에서 운영 체제에 대한 설치 지침을 찾을 수 있습니다. 2. Docker 이미지 생성
PHP 애플리케이션을 배포하기 전에 필수 환경이 포함된 Docker 이미지입니다. 이를 위해서는 이미지 빌드 단계를 정의하는 Dockerfile이라는 파일을 생성해야 합니다. Dockerfile的文件,在其中定义构建镜像的步骤。

下面是一个示例的Dockerfile

# 使用一个基础的PHP镜像
FROM php:7.4-apache

# 安装所需的PHP扩展
RUN docker-php-ext-install pdo_mysql

# 将应用程序复制到工作目录
COPY . /var/www/html

# 设置Apache配置文件
COPY apache.conf /etc/apache2/sites-available/000-default.conf

# 设置Apache的DocumentRoot
RUN sed -ri -e 's!/var/www/html!/var/www/html/public!g' /etc/apache2/sites-available/000-default.conf

# 设置Apache访问权限
RUN chown -R www-data:www-data /var/www/html
RUN a2enmod rewrite

# 设置环境变量
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public

# 暴露容器的端口
EXPOSE 80

# 启动Apache服务器
CMD ["apache2-foreground"]
로그인 후 복사

以上的Dockerfile使用php:7.4-apache作为基础镜像,安装了pdo_mysql扩展,将应用程序复制到容器的指定目录中,设置Apache配置文件,启用了rewrite模块,并将DocumentRoot设置为应用程序的public目录。

三、编写Docker Compose文件
接下来,我们需要编写一个Docker Compose文件,该文件用于定义和管理多个容器的运行和交互。

下面是一个示例的docker-compose.yml文件:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8080:80
    volumes:
      - .:/var/www/html
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
로그인 후 복사

以上的docker-compose.yml文件定义了两个服务:appdbapp服务使用了我们之前创建的Docker镜像,将容器的80端口映射到本地的8080端口,并将当前目录挂载到容器的/var/www/html目录下。db服务使用了MySQL的官方镜像,设置了数据库的root密码、数据库名和用户密码。

四、启动容器
在命令行中,进入项目的根目录,执行以下命令来启动容器:

$ docker-compose up -d
로그인 후 복사

其中,-d参数表示在后台启动容器。

五、访问应用
在容器启动后,我们可以通过浏览器访问http://localhost:8080来查看应用程序。如果一切正常,您将看到您的PHP应用程序。

六、管理容器
使用Docker Compose,我们可以轻松管理和操作多个容器。

以下是一些常用的命令:

  • 启动容器:docker-compose up -d
  • 关闭容器:docker-compose down
  • 查看容器状态:docker-compose ps
  • 查看容器日志:docker-compose logs
  • 다음은 Dockerfile의 예입니다.
rrreee

위의 Dockerfilephp:7.4-apache를 기본 이미지로 사용합니다. >pdo_mysql 확장을 설치하고, 애플리케이션을 컨테이너의 지정된 디렉터리에 복사하고, Apache 구성 파일을 설정하고, 다시 쓰기 모듈을 활성화하고, DocumentRoot를 애플리케이션의 public 디렉터리로 설정합니다.

3. Docker Compose 파일 작성🎜다음으로, 여러 컨테이너의 실행 및 상호 작용을 정의하고 관리하는 데 사용되는 Docker Compose 파일을 작성해야 합니다. 🎜🎜다음은 docker-compose.yml 파일의 예입니다. 🎜rrreee🎜위의 docker-compose.yml 파일은 두 가지 서비스를 정의합니다: app /code > 및 <code>db. app 서비스는 이전에 생성한 Docker 이미지를 사용하고, 컨테이너의 포트 80을 로컬 포트 ​​8080에 매핑하고, 현재 디렉터리를 컨테이너의 /var/www/html code>에 마운트합니다. 예배 규칙서. <code>db 서비스는 MySQL의 공식 이미지를 사용하고 데이터베이스의 루트 비밀번호, 데이터베이스 이름 및 사용자 비밀번호를 설정합니다. 🎜🎜4. 컨테이너 시작🎜명령줄에 프로젝트의 루트 디렉터리를 입력하고 다음 명령을 실행하여 컨테이너를 시작합니다. 🎜rrreee🎜그 중 -d 매개변수는 시작을 나타냅니다. 백그라운드에서 컨테이너입니다. 🎜🎜5. 애플리케이션 액세스🎜컨테이너가 시작된 후 브라우저를 통해 http://localhost:8080에 액세스하면 애플리케이션을 볼 수 있습니다. 모든 것이 정상이면 PHP 애플리케이션이 표시됩니다. 🎜🎜6. 컨테이너 관리🎜Docker Compose를 사용하면 여러 컨테이너를 쉽게 관리하고 운영할 수 있습니다. 🎜🎜다음은 일반적으로 사용되는 명령입니다. 🎜
  • 컨테이너 시작: docker-compose up -d🎜
  • 컨테이너 닫기: docker-compose down 🎜<li>컨테이너 상태 보기: <code>docker-compose ps🎜
  • 컨테이너 로그 보기: docker-compose 로그🎜🎜🎜VII 사용 Docker와 Docker Compose를 사용하면 PHP 애플리케이션을 보다 편리하게 배포하고 관리할 수 있습니다. 애플리케이션과 환경을 컨테이너로 패키징함으로써 애플리케이션이 다양한 환경에서 일관되게 실행되고 확장 및 제공이 더 쉬워지도록 보장합니다. 이 기사가 Docker를 사용하여 PHP 애플리케이션을 배포하고 관리하는 데 대한 기본 지식과 지침을 제공할 수 있기를 바랍니다. Docker를 사용하여 애플리케이션을 개발하고 제공하는 데 성공하길 바랍니다. 🎜

위 내용은 Docker를 사용하여 PHP 애플리케이션을 배포하고 관리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿