본문 바로가기
Synology/Docker(in Synology)

Docker httpd + mysql + laraval install

by kage2k 2024. 1. 27.
728x90
반응형

Docker httpd + mysql + laraval install

  • 안내말 입니다.
  • 개인적으로 남기는 글입니다. 아래의 경우를 미리 공지합니다.
  1. 높임말은 없는 경우가 있습니다.
  2. 영어, 일본어, 베트남어를 공부하고 있습니다. 경우에 따라서 사용됩니다.
  3. 보기 거북하다면 뒤로가기 해주세요.

이야기 시작-

backend 공부를 위해서 가지고 있는 NAS 서버에 laraval을 설치 해보려한다.

시작

먼저 아래의 파일을 생성 적당한 위치에 저장을 하고 나중에 서버로 복사한다.

예시)

/volume1/docker/laraval/mysql_db/my.cnf

my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4

MySQL 기본 패키지는 character set 이 latin1 로 설정되어있습니다.
character set 을 utf8 로 설정하여 한글 및 다른 언어가 께지는 것을 처리해야합니다.
때로는 utf8mb4 로 설정하는 경우도 있는데 utf8mb4는 emoji를 데이터베이스에 저장할 수 있습니다.
emoji는 4byte 문자이기 때문에 utf8 의 상위 호환인 utf8mb4를 사용해야 저장할 수 있습니다.

NOTE: character set 이 utf8 인 상태에서 emoji를 데이터베이스 저장하려면 error 가 발생합니다.

인용 : https://inma.tistory.com/100

시놀로지에 폴더 구조를 만든다.

예시)

/volume1/docker/laraval
/volume1/docker/laraval/mysql_db/data

portainer에 접속하여 Stacks 에 내용을 넣는다.

Stacks 내용

version: '3.9'
services:
  apache:
    image: httpd:latest
    container_name: laraval_project
    ports:
    - '18183:80'
    volumes:
    - /volume1/docker/laraval:/usr/local/apache2/htdocs
  db:
   image: mysql:5.7
   container_name: laravel_project_db
   environment:
     MYSQL_ROOT_PASSWORD: root
     MYSQL_DATABASE: laravel_db
     MYSQL_USER: useruser
     MYSQL_PASSWORD: passpass
     TZ: 'Asia/Seoul'
   command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
   volumes:
     - /volume1/docker/laraval/mysql_db/data:/var/lib/mysql
     - /volume1/docker/laraval/mysql_db/my.cnf:/etc/mysql/conf.d/my.cnf
   ports:
     - 13306:3306

쉽게 하기 위해서 portainer안에서

bash 에 접속하여 아래의 순서로 진행한다. ( 왠만하면 ssh 를 이용해서 접속하자. )

apt update
apt install php php-dom php-xml php-curl libapache2-mod-php composer

주의 여기서 php8.2-curl 부분의 버전은 필자의 시스템에서 에러 나서 붙인것임.

laraval install

조건 위에 bash에 접속 중!

composer create-project laravel/laravel backend1

시간이 소요됩니다. 하지만 중간에 php-curl등에서 에러 발생하면 상황에 맞게 수정해야한다.

 

이후,

1. 해당 폴더를 로컬 시스템에 복사하고 backend 작업을 마무리 한뒤에서 업로드

2. 시놀로지 역방향 프록시 지정해서 서브 도메인연결 

3. flutter등에서 사용하면 끝.

사용된 리눅스 명령어

docker ps docker container ID를 알 수 있다.
docker exec -it Container_ID /bin/bash
rm -rf 폴더명 리눅스 폴더 삭제

 

 

END

300x250
반응형