优秀的编程知识分享平台

网站首页 > 技术文章 正文

一个简单的Docker部署gitsrum应用

nanyue 2024-08-22 17:29:21 技术文章 5 ℃

本文通过一个简单的实践介绍下Docker在一般的场景的简单高效的应用过程,我们通过Docker部署一个开源的敏捷项目管理系统。因为gitsrum项目是采用PHP语言开发,我们需要一个mysql数据库,同时需要PHP的运行环境支撑。下面详细的描述下整个部署过程。

步骤一,准备部署配置文件

mkdir docker-gitscrum
cd docker-gitsrum
mkdir config log mysql www

添加Dockerfile文件,内容如下:

FROM php:7.1-fpm

LABEL maintainer "xiaobaoqiang "

COPY ./sources.list /etc/apt/sources.list

RUN apt-get update

RUN apt-get install -y \
 git \
 vim \
 libz-dev \
 libcurl4-gnutls-dev \
 libmcrypt-dev \
 libicu-dev \
 zip \
 unzip \
 gnupg \
 && docker-php-ext-install pdo_mysql \
 && docker-php-ext-install iconv \
 && docker-php-ext-install mcrypt \
 && docker-php-ext-install intl \
 && docker-php-ext-install opcache \
 && docker-php-ext-install mbstring \
 && docker-php-ext-install curl \
 && docker-php-ext-install zip


# Install nodejs
RUN apt-get install -y software-properties-common
RUN curl -sL https://deb.nodesource.com/setup_7.x | bash -
RUN apt-get install -y nodejs npm
RUN npm config set registry https://registry.npm.taobao.org
RUN npm install --global gulp gulp-cli

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN chmod 755 /usr/local/bin/composer

# Set Composer Mirror
RUN composer config -g repo.packagist composer https://packagist.laravel-china.org

# Install php-cs-fixer
#RUN curl -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.0.0/php-cs-fixer.phar -o /usr/local/bin/php-cs-fixer
COPY ./php-cs-fixer.phar /usr/local/bin/php-cs-fixer
RUN chmod a+x /usr/local/bin/php-cs-fixer

RUN apt-get clean

EXPOSE 9200 9000 80

CMD ["php-fpm"]

为了加速安装包的下载,我们添加163的镜像地址

vi sources.list
# deb http://snapshot.debian.org/archive/debian/20190326T120000Z stretch main
deb http://mirrors.163.com/debian stretch main
# deb http://mirrors.163.com/archive/debian-security/20190326T120000Z stretch/updates main
deb http://mirrors.163.com/debian-security stretch/updates main
# deb http://mirrors.163.com/archive/debian/20190326T120000Z stretch-updates main
deb http://mirrors.163.com/debian stretch-updates main

创建PHP的配置文件

cd config
vi [global]
error_log = /var/log/php-fpm/fpm-error.log
daemonize = no

[www]
user = www-data
group = www-data
listen = [::]:9000

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /php/fpm/status

clear_env = no

access.log = /var/log/php-fpm/access.log
access.format = "%t \"%m %r%Q%q\" %s %{mili}dms %{kilo}Mkb %C%%"
catch_workers_output = yes

php_flag[display_errors] = on
php_admin_value[date.timezone] = "Asia/Shanghai"
vi php.ini
[PHP]
short_open_tag = off

[Date]
date.timezone = "Asia/Shanghai"

创建Nginx的配置文件

cd config
vi server.conf
server {
 listen 80;
 server_name app.gitscrum.dev;
 
 access_log /var/log/nginx/access.log;
 error_log /var/log/nginx/error.log;

 root /var/www/html/laravel-gitscrum/public;
 index index.php;
 client_max_body_size 25M;
 fastcgi_read_timeout 1800;
 
 location / {
 try_files $uri $uri/ /index.php$is_args$args;
 }

 location ~ \.php$ {
 try_files $uri =404;
 fastcgi_pass phpfpm-gitscrum:9000;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include /etc/nginx/fastcgi_params;
 }

 location /php/fpm/status {
 fastcgi_pass phpfpm-gitscrum:9000;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include /etc/nginx/fastcgi_params;
 }

}

创建mysql配置文件

cd config
vi docker.cnf
[mysqld]
skip-host-cache
skip-name-resolve
default_authentication_plugin = mysql_native_password

步骤二,下载gitsrum源代码

cd www
git clone https://github.com/gitscrum-community/laravel-gitscrum.git

修改gitsrum的配置文件.env

cd www/laravel-gitscrum
vi .env
APP_ENV=local
APP_KEY=base64:W2ToyfW8zHqtWfcZb1hp2kZgccbuy3XtERDyZywtVkE=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://10.0.0.50
APP_TITLE=GitScrum
APP_LANG=zh_cn

GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=

GITLAB_KEY=9e9bbc01d983c9bca487b468de1afd9389xxxxxxxxxxxxxxxxxxxxxxx
GITLAB_SECRET=9436d9fae69e7e9ebd359c14b8e1222xxxxxxxxxxxxxxxxxxxxxxx
GITLAB_INSTANCE_URI=http://10.0.0.50:9080/

BITBUCKET_CLIENT_ID=
BITBUCKET_CLIENT_SECRET=

DB_CONNECTION=mysql
DB_HOST=mysql-gitscrum
DB_PORT=3306
DB_DATABASE=develop
DB_USERNAME=gitscrum
DB_PASSWORD=123456

APP_PAGINATE=10

PROXY_PORT=
PROXY_METHOD=
PROXY_SERVER=
PROXY_USER=
PROXY_PASS=

SLACK_CHANNEL=channel-name
SLACK_BOT_NAME=bot-name
SLACK_WEBHOOK=endpoint


步骤三,开始部署

创建Docker部署配置文件

vi docker-compose.yml
# PHP
phpfpm-gitscrum:
 build: .
 restart: always
 environment:
 - DEBUG=1
 volumes:
 - ./config/php-fpm.conf:/usr/local/etc/php-fpm.conf
 - ./config/php.ini:/usr/local/etc/php/php.ini
 - ./www:/var/www/html
 - ./log/php-fpm:/var/log/php-fpm
 links:
 - mysql-gitscrum

# NGINX
nginx-gitscrum:
 restart: always
 image: nginx
 ports:
 - "80:80"
 links:
 - phpfpm-gitscrum
 volumes:
 - ./config/server.conf:/etc/nginx/conf.d/default.conf
 - ./www:/var/www/html
 - ./log/nginx:/var/log/nginx

# MYSQL
mysql-gitscrum:
 restart: always
 image: mysql
 ports:
 - "3306:3306"
 environment:
 MYSQL_ROOT_PASSWORD: 123456
 MYSQL_USER: gitscrum
 MYSQL_PASSWORD: 123456
 MYSQL_DATABASE: develop
 volumes:
 - ./mysql/databases:/var/lib/mysql
 - ./log/mysql:/var/log/mysql
 - ./config/docker.cnf:/etc/mysql/conf.d/docker.cnf

安装部署工具

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
docker-compose version 1.24.0, build 1110ad01

开始部署

docker-compose up --build
.......................
.......................
Successfully built c4fe14fa3da3
Successfully tagged docker-gitscrum_phpfpm-gitscrum:latest
Creating docker-gitscrum_mysql-gitscrum_1 ... done
Creating docker-gitscrum_phpfpm-gitscrum_1 ... done
Creating docker-gitscrum_nginx-gitscrum_1 ... done
Attaching to docker-gitscrum_mysql-gitscrum_1, docker-gitscrum_phpfpm-gitscrum_1, docker-gitscrum_nginx-gitscrum_1
mysql-gitscrum_1 | 2019-05-01T05:02:08.915841Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
mysql-gitscrum_1 | 2019-05-01T05:02:08.915918Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.16) starting as process 1
mysql-gitscrum_1 | 2019-05-01T05:02:09.904586Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
mysql-gitscrum_1 | 2019-05-01T05:02:09.906606Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
mysql-gitscrum_1 | 2019-05-01T05:02:09.920529Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.16' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
mysql-gitscrum_1 | 2019-05-01T05:02:10.170904Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060

出现上述日志,说明gitsrum的PHP和Mysql环境已经启动成功了


步骤四,验证

查看我们刚才构建的gitsrum docker镜像

docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-gitscrum_phpfpm-gitscrum latest c4fe14fa3da3 4 days ago 711MB
php 7.1-fpm 5bc07b7ec70a 6 days ago 358MB
mysql latest d72169616e20 6 days ago 443MB
gitlab/gitlab-ce latest b3a3f6564d33 7 days ago 1.77GB
nginx latest 27a188018e18 2 weeks ago 109MB

查看docker启动的容器

docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b28667f9e2d nginx "nginx -g 'daemon of…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp docker-gitscrum_nginx-gitscrum_1
dd439b5982b3 docker-gitscrum_phpfpm-gitscrum "docker-php-entrypoi…" 4 minutes ago Up 4 minutes 80/tcp, 9000/tcp, 9200/tcp docker-gitscrum_phpfpm-gitscrum_1
70ae5d88c24c mysql "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp docker-gitscrum_mysql-gitscrum_1

通过浏览器访问http://10.0.0.50

出现上面截图内容,说明我们的gitsrum启动成功并且可以访问。

由于gitsrum系统采用Oauth登陆,它并不提供用户注册的功能,所以我们需要在laravel-gitscrum的.env配置Oauth的登陆信息,下面配置参数只是一个示例:

GITLAB_KEY=9e9bbc01d983c9bca487b468de1afd9389xxxxxxxxxxxxxxxxxxxxxxx
GITLAB_SECRET=9436d9fae69e7e9ebd359c14b8e1222xxxxxxxxxxxxxxxxxxxxxxx
GITLAB_INSTANCE_URI=http://10.0.0.50:9080/

参考:

https://github.com/gitscrum-community/docker-gitscrum

https://docs.docker.com/compose/install/

文章如有不妥之处,欢迎指正!谢谢!

最近发表
标签列表