├── Basics ├── Dockerfile ├── docker-compose.yml └── entrypoint.sh └── README.md /Basics/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.9 2 | LABEL "Mail":"arvon2014@gmail.com"\ 3 | "version":"v1.2.2" 4 | ENV RUN_USER daemon 5 | ENV RUN_GROUP daemon 6 | ENV INSTALL_DIR /opt/navi 7 | ENV DB_HOST 127.0.0.1 8 | ENV DB_PORT 3306 9 | ENV DB_DATABASE homestead 10 | ENV DB_USERNAME homestead 11 | ENV DB_PASSWORD secret 12 | ENV LOGIN_COPTCHA true 13 | 14 | ARG WEBSTACK_VERSION=v1.2.2 15 | ARG DOWNLOAD_URL=https://github.com/hui-ho/WebStack-Laravel/archive/refs/tags/${WEBSTACK_VERSION}.tar.gz 16 | EXPOSE 8000 17 | 18 | RUN apk update -qq \ 19 | && apk upgrade \ 20 | && apk add --no-cache tini \ 21 | curl composer libmcrypt-dev\ 22 | php-pdo php-fileinfo php-tokenizer php-gd php-dom php-xmlwriter php-xml php-pdo_mysql php-session \ 23 | && rm -rf /var/cache/apk/* \ 24 | && mkdir -p ${INSTALL_DIR} 25 | 26 | RUN curl -L --silent ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${INSTALL_DIR}" \ 27 | && cd ${INSTALL_DIR} \ 28 | && composer install 29 | 30 | COPY entrypoint.sh /entrypoint.sh 31 | 32 | RUN cd ${INSTALL_DIR} \ 33 | &&cp .env.example .env \ 34 | && chown -R ${RUN_USER}:${RUN_GROUP} ${INSTALL_DIR} \ 35 | && chown -R ${RUN_USER}:${RUN_GROUP} /entrypoint.sh 36 | 37 | VOLUME /opt/navi 38 | 39 | WORKDIR ${INSTALL_DIR} 40 | CMD ["/entrypoint.sh", "serve"] 41 | ENTRYPOINT ["/sbin/tini", "--"] 42 | -------------------------------------------------------------------------------- /Basics/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | db: 5 | image: mysql/mysql-server:5.6 6 | restart: always 7 | container_name: "mysql_wsl" 8 | environment: 9 | MYSQL_ROOT_PASSWORD: Tym8zrnNRpz4 10 | MYSQL_DATABASE: webstack 11 | MYSQL_USER: webstack 12 | MYSQL_PASSWORD: Xym8zrnNRpz 13 | command: --default-authentication-plugin=mysql_native_password 14 | networks: 15 | - "webstacknet" 16 | redis: 17 | image: redis:3 18 | container_name: "redis_wsl" 19 | restart: always 20 | networks: 21 | - "webstacknet" 22 | webstack: 23 | image: arvon2014/webstack-laravel:v1.2.2 24 | container_name: "wsl" 25 | ports: 26 | - 8000:8000 27 | depends_on: 28 | - "db" 29 | - "redis" 30 | environment: 31 | LOGIN_COPTCHA: "false" 32 | DB_HOST: db 33 | DB_PORT: 3306 34 | DB_DATABASE: webstack 35 | DB_USERNAME: webstack 36 | DB_PASSWORD: Xym8zrnNRpz 37 | command: ['/entrypoint.sh','server'] 38 | networks: 39 | - "webstacknet" 40 | networks: 41 | webstacknet: 42 | driver: bridge 43 | -------------------------------------------------------------------------------- /Basics/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd ${INSTALL_DIR} 4 | sed -i -e "s/DB_HOST=.*/DB_HOST=${DB_HOST}/; \ 5 | s/DB_PORT=.*/DB_PORT=${DB_PORT}/; \ 6 | s/APP_URL=.*/APP_URL=/; \ 7 | s/DB_DATABASE=.*/DB_DATABASE=${DB_DATABASE}/; \ 8 | s/DB_USERNAME=.*/DB_USERNAME=${DB_USERNAME}/; \ 9 | s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/" .env 10 | sed -i "/login-captcha/{n;s/'enable.*/'enable' => ${LOGIN_COPTCHA}/}" config/admin.php 11 | 12 | 13 | ##php artisan key:generate 14 | if [ $1 == 'server' ];then 15 | if grep -qxF APP_STATE=active .env; then 16 | echo "not first ..." 17 | php artisan serve --host=0.0.0.0 --port=8000 18 | else 19 | php artisan key:generate 20 | result=1 21 | while [ $result -ne 0 ];do 22 | php artisan migrate:refresh --seed 23 | result=$? 24 | sleep 3 25 | done 26 | grep -q "APP_STATE=" .env && sed -i "s/APP_STATE=.*/APP_STATE=active/" .env || echo APP_STATE=active >> .env 27 | echo "is first ..." 28 | php artisan serve --host=0.0.0.0 --port=8000 29 | fi 30 | elif [ $1 == 'regresh' ];then 31 | php artisan migrate:refresh --seed 32 | elif [ $1 == 'generate' ];then 33 | php artisan key:generate 34 | elif [ $1 == 'debug' ];then 35 | top 36 | else 37 | echo "Usage: $0 server|regresh|generate|debug" 38 | fi 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### 项目介绍 2 | 3 | 根据[WebStackLaravel](https://github.com/hui-ho/WebStack-Laravel)项目创建的Docker部署版本,旨在快速进行部署和使用,也总结了一些这个项目的使用经验及排错方法。此后会根据此项目Release版本不定期更新。欢迎使用及建议 4 | 5 | - 联系邮箱【gourds@yeah.net】 6 | 7 | ### update 8 | 9 | - 根据@itthinker1 的反馈,修改了下启动方式,现在可以直接使用 10 | 11 | ### 使用说明 12 | 13 | 包含直接执行`docker run`的方式以及`docker-compose`的方式,推荐使用docker-compose的方法,另外添加了支持参数的说明 14 | 15 | - 镜像支持的参数 16 | 17 | |参数|说明| 18 | |---|---| 19 | |INSTALL_DIR|容器内的部署家目录| 20 | |DB_HOST|数据库地址,默认`127.0.0.1`| 21 | |DB_PORT|数据库端口,默认`3306`| 22 | |DB_DATABASE|数据库名称,默认`homestead`| 23 | |DB_USERNAME|数据库用户名,默认`homestead`| 24 | |DB_PASSWORD|数据库密码,默认`secret`| 25 | |LOGIN_COPTCHA|是否启动控制台验证码,默认true| 26 | 27 | 28 | - 使用`docker run`方式 29 | **注意**由于webstacklaravel需要mysql支持,所以直接使用`docker run`需要手动指定Mysql的地址信息 30 | 目前支持的参数 31 | 32 | - 使用`Docker-compose`方式 33 | 使用compose命令会起3个容器,第一次启动默认会进行数据库初始化 34 | ``` 35 | docker-compose up 36 | ``` 37 | 38 | 39 | 40 | 41 | 42 | ### 常见问题 43 | 44 | 针对一些原项目的提问在这里做一下汇总,欢迎补充 45 | 46 | - 改变监听地址 47 | 可以通过Nginx Proxy进行代理,或者添加`--host`参数 48 | ``` 49 | php artisan serve --host=0.0.0.0 --port=8000 50 | ``` 51 | 52 | - 推荐使用Mysql5.6版本 53 | --------------------------------------------------------------------------------