Shell Script 문법 정리
Title: Bash Shell Script 문법 정리 Author: DongDongE Tags: Programming Release: 2021.02.08 [Shell
PHP MVC 패턴 - 라라벨 도커 설치 WebHacking 플랫폼을 구현 도중 이번에는 시중에 오픈된 PHP MVC - Laravel를 통하여 취약점 테스팅을 제작해보고싶어 Docker로 PHP laravel를 구현하였습니다.
Title: PHP Laravel - Docker
Author: DongDongE
Tags: Programming
Release: 2020.08.07
WebHacking 플랫폼을 구현 도중 이번에는 시중에 오픈된 PHP MVC - Laravel를 통하여 취약점 테스팅을 제작해보고싶어 Docker로 PHP laravel를 구현하였습니다.
우선 준비물은 아래와 같습니다.
version: "3"
services:
php:
image: laravel_php_5.3.0
container_name: laravel_php_5.3.0
# restart: always
# volumes:
# - ./myapp:/var/www/html/myapp
depends_on:
- mysql
links:
- mysql:mysql
build:
context: ./php-fpm
dockerfile: ./Dockerfile
tty: true
# environment: :
# TEST: test
# working_dir: /var/www/html/myapp
networks:
- laravel_5.3.0
ports:
- "127.0.0.1:9999:9000"
mysql:
image: laravel_mysql_5.3.0
container_name: laravel_mysql_5.3.0
# restart: always
volumes:
- leravel_dbs_5.3.0:/var/lib/mysql
build:
context: ./mysql
dockerfile: ./Dockerfile
tty: true
environment:
MYSQL_DATABASE: myapp
MYSQL_ROOT_PASSWORD: toor
MYSQL_USER: dongdonge
MYSQL_PASSWORD: toor
networks:
- laravel_5.3.0
ports:
- "127.0.0.1:5674:3306"
volumes:
leravel_dbs_5.3.0:
# driver: local
networks:
laravel_5.3.0:
driver: bridge
ipam:
config:
- subnet: 172.16.12.0/24
Docker-compose.yml
현재 단순히 프로그래밍 코딩을 위하여 별도 Apache나 Nginx같이 웹서버 전용 도커는 포함하지 않았습니다.
php 자체에서 웹서버를 구동하여 코딩을 하기 위해 "PHP" 컨테이너와 디비를 저장하기 위한 "MySQL" 컨테이너를 준비하였습니다.
FROM ubuntu:18.04
LABEL DongDongE="DongDongE@d0ngd0nge.xyz"
ARG OS_LOCALE=C.UTF-8
# C.UTF-8
CMD /usr/sbin/locale-gen ${OS_LOCALE}
ENV DEBIAN_FRONTEND=noninteractive \
DEBCONF_NONINTERACTIVE_SEEN=true \
LC_ALL=${OS_LOCALE} \
LANG=${OS_LOCALE}
WORKDIR /var/www/html/
# composer create-project --prefer-dist laravel/laravel myapp "5.5.*" && \
RUN apt-get update && \
apt-get install curl git vim net-tools php7.2 php7.2-cli php7.2-mysql php7.2-mbstring php7.2-sqlite3 php7.2-mbstring php7.2-xml -y && \
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
composer create-project --prefer-dist laravel/laravel myapp "5.3.0" && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
WORKDIR /var/www/html/myapp
EXPOSE 9000
CMD [ "/usr/bin/php", "artisan", "serve", "--host=0.0.0.0", "--port=9000" ]
./php-fpm/Dockerfile
php 전용 Dockerfile 입니다. "CMD"부분을 보시면 php 바이너리를 통하여 artisan php를 serve 옵션을 사용하여 php 자체적으로 웹서버를 구동시킵니다.
FROM mysql:5.7
# mysql> SHOW VARIABLES LIKE '%VERSION%';
# +-------------------------+------------------------------+
# | Variable_name | Value |
# +-------------------------+------------------------------+
# | innodb_version | 5.7.29 |
# | protocol_version | 10 |
# | slave_type_conversions | |
# | tls_version | TLSv1,TLSv1.1,TLSv1.2 |
# | version | 5.7.29 |
# | version_comment | MySQL Community Server (GPL) |
# | version_compile_machine | x86_64 |
# | version_compile_os | Linux |
# +-------------------------+------------------------------+
ARG OS_LOCALE=C.UTF-8
# C.UTF-8
CMD /usr/sbin/locale-gen ${OS_LOCALE}
ENV DEBIAN_FRONTEND=noninteractive \
DEBCONF_NONINTERACTIVE_SEEN=true \
LC_ALL=${OS_LOCALE} \
LANG=${OS_LOCALE}
# COPY schema.sql /docker-entrypoint-initdb.d
# RUN chmod -R o+r /docker-entrypoint-initdb.d
# Secure-file-priv Disable
# RUN echo "secure-file-priv=\"\"" >> /etc/mysql/conf.d/docker.cnf
EXPOSE 3306 33060
CMD [ "mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci", "--skip-character-set-client-handshake", "--innodb-flush-log-at-trx-commit=0" ]
./mysql/Dockerfile
Mysql 전용 Dockerfile입니다. 추후에 Laravel를 통하여 Mysql에 회원가입 정보를 저장하기 위해 사용할 예정입니다.
$ sudo docker-compose up -d
위 명령어를 통하여 도커 환경을 자동 셋팅합니다.