관리 메뉴

java,javascript,android,php,sql,공부용,메모용

도커 시작 메모1 본문

개발/php

도커 시작 메모1

yy_dd2 2023. 7. 5. 21:51
반응형

메모겸 잊을 거 같아서 작성해 둠

라라벨 환경 도커로 구성하기

 


1. Docker 컨테이너를 직접 접속하여 패키지를 설치하는 방법:

- 도커 이미지를 기반으로 컨테이너를 생성하고 컨테이너에 접속합니다.
- 컨테이너 내에서 필요한 패키지를 설치하고 설정을 변경합니다.
- Laravel을 설치하고 애플리케이션을 실행합니다.

# 컨테이너 접속
docker run -it my-laravel-container /bin/bash

# 필요한 패키지 설치
apt-get update
apt-get install -y nginx php-fam php-mysql php-mbstring php-xml php-zip php php-cli composer




2. Docker Compose를 사용하여 서비스 정의 및 실행하는 방법:

- 프로젝트의 루트 디렉토리로 이동합니다.
- docker-compose.yml 파일을 생성합니다.
- docker-compose.yml 파일에 필요한 서비스 및 설정을 정의합니다.
- 정의한 서비스에 대한 옵션과 설정을 추가하고 필요한 경우 환경 변수를 설정합니다.
- docker-compose up 명령을 사용하여 서비스를 실행합니다.

# 프로젝트의 루트 디렉토리로 이동

# docker-compose.yml 파일 생성 및 편집

# 서비스 정의 및 설정 추가

# docker-compose up 명령 실행
docker-compose up

컨테이너가 이미 생성된 경우:

- 이미 생성된 컨테이너가 실행 중인 경우 docker-compose start 명령을 사용하여 컨테이너를 시작할 수 있습니다.
- 컨테이너를 종료하려면 Ctrl + C를 누르거나 다른 터미널에서 docker-compose down 명령을 실행합니다.

# 이미 생성된 컨테이너가 실행 중인 경우 시작하기
docker-compose start

# 컨테이너 종료
docker-compose down


3. 추가적인 정보:

- docker-compose up 명령을 실행한 터미널 세션에서는 컨테이너의 로그를 볼 수 있지만, 별도의 명령을 실행할 수는 없습니다.
- docker-compose exec 명령을 사용하여 컨테이너 내부로 들어가거나, docker exec 명령을 사용하여 컨테이너에서 원하는 명령을 실행할 수 있습니다.


--------
Dockerfile

FROM php:7.4-apache
COPY . /var/www/html
RUN chown -R www-data:www-data /var/www/html
RUN chmod -R 775 /var/www/html


위 Dockerfile은 PHP 7.4와 Apache를 기반으로 하는 컨테이너를 생성하며, 현재 디렉토리의 모든 파일을 /var/www/html 경로로 복사합니다. 그리고 /var/www/html 디렉토리의 소유자를 www-data로 변경하고 권한을 775로 설정합니다.
---------
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_DATABASE: laravel
      MYSQL_ROOT_PASSWORD: secret


위 docker-compose.yml 파일은 두 개의 서비스(app과 db)를 정의합니다. 
app 서비스는 앞서 작성한 Dockerfile을 사용하여 이미지를 빌드하며, 
호스트의 8080 포트와 컨테이너의 80 포트를 연결합니다. 
또한 호스트의 현재 디렉토리를 컨테이너의 /var/www/html 경로와 공유합니다. 
app 서비스는 db 서비스에 의존성을 가지고 있으므로, 
db 서비스가 먼저 시작되어야 합니다.

---------------
이렇게 하고 docker-compose up
하고 실행 한 다음에 새로운 터미널을 열고

# 실행중인 도커 컨테이너 확인
docker ps

# 컨테이너 접속
docker exec -it <container_name> bash
docker exec -it laravel-test2-app-1 bash

# Composer 설치
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

# Composer 설치 확인
composer --version

# 필요한 패키지 설치
apt-get update
apt-get install -y zip unzip

# 라라벨 설치 (프로젝트이름: laravel_project_test1)
composer create-project --prefer-dist laravel/laravel laravel_project_test1

# 설치 확인
php artisan --version


위 단계를 따라 진행하시면 Docker 컨테이너를 실행하고, 
컨테이너 내부로 접속하여 Composer를 설치한 후 라라벨 프로젝트를 생성할 수 있습니다. 
마지막으로 php artisan --version 명령을 통해 라라벨 설치가 제대로 되었는지 확인할 수 있습니다.


반응형
Comments