【초보자라도 아는 Docker 입문】Docker 실천편(Docker Compose를 사용하는 Larevel 환경 구축)
6902 단어 docker-compose도커라라벨
Docker Compose란?
Docker compose는 여러 컨테이너로 구성된 서비스를 구축하고 실행하는 절차를 자동화하고 관리를 용이하게하는 기능입니다. (예 : Laravel이면 응용 프로그램 서버, 웹 서버, 데이터베이스 서버) Docker compose에서는 compose 파일을 준비하고 명령을 한 번 실행하여 해당 파일에서 설정을 읽고 모든 컨테이너 서비스를 시작할 수 있습니다. 수 있습니다.
Docker Compose를 사용할 때까지의 주요 단계
· 각 컨테이너의 Dockerfile을 만듭니다 (이미있는 이미지를 사용하는 경우 필요 없음).
· docker-compose.yml을 작성하고, 각각 독립한 컨테이너의 기동 정의를 실시합니다 (경우에 따라서는 구축 정의도 포함된다)
· "docker-compose up"명령을 실행하여 docker-compose.yml에 정의 된 컨테이너를 시작합니다.
컨테이너 구성
app, web, db의 3개의 컨테이너 구성이 좋다고 생각합니다만 이번은 app와 db의 2개의 컨테이너 구성으로 가고 싶습니다.
docker ───app
├──000-default.conf
├──Dockerfile
├──php.ini
db
├──data
├──my.cnf
src ────
$ mkdir docker-laravel
$ cd docker-laravel
Dockerfile 만들기
FROM php:7.4-apache
ADD php.ini /usr/local/etc/php/
ADD 000-default.conf /etc/apache2/sites-enabled/
RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer
RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim \
libpng-dev \
libpq-dev \
&& docker-php-ext-install pdo_mysql
RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
RUN /bin/sh -c a2enmod rewrite
docker-compose.yml 만들기
docker-compose.yml
version: '3'
services:
# ---------------------------------
# laravelを動かすコンテナ
# ---------------------------------
app:
ports:
- "8000:80"
build: ./docker/app
container_name: laravel_app
volumes:
- ./src:/var/www/html
# ----------------------------------
# MySQLを動かすコンテナ
# ----------------------------------
db:
image: mysql:5.7
container_name: laravel_db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel_db
MYSQL_USER: laravel_user
MYSQL_PASSWORD: laravel_pass
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
ports:
- 3306:3306
기타 파일 설명
000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/laravel/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/laravel/public>
AllowOverride All
</Directory>
</VirtualHost>
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
my.cnf
[mysqld]
character-set-server=utf8
1, 이미지 만들기
$ docker-compose build
2, 컨테이너의 기동
$ docker-compose up -d
3, 컨테이너 내에 들어간다
$ docker-compose exec app bash
4, laravel의 프로젝트 작성
# composer create-project --prefer-dist laravel/laravel laravel "6.18.*"
# cd laravel
# chmod 777 -R storage/
# php artisan key:generate
http://localhost:8000/ 로 이동하여 아래 화면이 표시되면 OK입니다.
5, 데이터베이스에 접속하여 migration을 실시한다
.env
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=laravel_pass
로 설정합니다. 그리고 마이그레이션을 한다.
# php artisan migrate
Reference
이 문제에 관하여(【초보자라도 아는 Docker 입문】Docker 실천편(Docker Compose를 사용하는 Larevel 환경 구축)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ymktmk_tt/items/6c3c388748abae825350텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)