docker - 在 gitlab 中构建 docker 时,将 src 文件夹中的文件复制到 nginx 中
问题描述
我正在尝试将文件从我的 repo 根目录上的 src 文件夹复制到 nginx 映像中的 www 文件夹中,也许还有 php-fpm 文件夹(如果需要?),当它被构建并发送到我的注册表时。当我提交到 repo 时,我正在使用 gitlab 进行 CI,目前运行良好,但缺少文件复制。
在回购的根是:
.gitlab-ci.yaml
/php-fpm
/nginx
/src
我的 gitlab-ci.yml 文件:
image: docker:stable
services:
- docker:18-dind
variables:
DOCKER_HOST: tcp://localhost:2376
php:
before_script:
- docker login gitlab.domain.com:5050 -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD}
script:
- docker build -t gitlab.domain.com:5050/project/site/php:7.2-fpm ./php-fpm
- docker push gitlab.domain.com:5050/project/site/php:7.2-fpm
nginx:
before_script:
- docker login gitlab.domain.com:5050 -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD}
script:
- docker build -t gitlab.domain.com:5050/project/site/nginx:stable ./nginx
- docker push gitlab.domain.com:5050/project/site/nginx:stable
图像当前可以很好地添加到存储库中,但是我需要将 /src 文件复制进去。
在 /nginx 中是一个 Dockerfile:
FROM nginx:1.18.0-alpine
COPY conf/default.conf /etc/nginx/conf.d/default.conf
在 /nginx/conf 中:
server {
listen 80;
index index.php index.html;
root /var/www/html/public;
client_max_body_size 32M;
location / {
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/sock/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
在 /php-fpm/entrypoint.sh 中(我还需要在这里复制 /src 文件吗?)
#!/bin/sh
WORKDIR="/var/www/html"
chown -R www-data:www-data $WORKDIR
cd $WORKDIR
php artisan cache:clear
php artisan route:clear
php artisan config:cache
php-fpm -F
在 /php-fpm/Dockerfile
FROM php:7.2-fpm-alpine
RUN docker-php-ext-install pdo_mysql
COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh
WORKDIR /var/www/html
CMD ["/usr/local/bin/entrypoint.sh"]
在 /php-fpm/php-fpm.d/php-fpm-www.conf
error_log = /proc/self/fd/2
[www]
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
listen = /sock/php-fpm.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3