我尝试使用php(symfony app)配置docker。
当我第一次构建容器时,symfony skeleton应用程序出现在容器中,但任何其他构建sasdoes都不会更改容器内的任何内容。
Dockefile
FROM nginx:latest
RUN rm ./etc/nginx/conf.d/default.conf
COPY ./nginx/site.conf /etc/nginx/conf.d/site.conf
COPY . /var/www/html
CMD ["nginx", "-g", "daemon off;"]
docker-compose
version: '3'
services:
simple-app-symfony:
image: simple-app-symfony
build: .
ports:
- "8080:80"
links:
- php
volumes:
- data:/var/www/html
php:
image: php:7.1-fpm
volumes:
- data:/var/www/html
volumes:
data:
nginx / site.conf
server {
listen 80;
listen [::]:80;
server_name ~.;
root /var/www/html/public;
index index.php index.html index.htm;
#location ~ \.php$ {
# try_files $uri =404;
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# fastcgi_pass php:9000;
# fastcgi_index index.php;
# include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_param PATH_INFO $fastcgi_path_info;
#}
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass php:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
}
我尝试了docker-compose build --no-cache,docker build。 -t simple-app-symfony - >没有什么变化。 有什么想法吗? 我认为问题在于卷,因为我删除了卷的分区,容器已经更新。
但我需要卷映射,因为在这种情况下,php需要访问源代码
答案 0 :(得分:0)
您正在以两个相互冲突的步骤更改/var/www/html
的内容:
COPY
指令将构建上下文中的文件复制到容器的/var/www/html
文件夹中。要解决此问题,请删除Dockerfile中的COPY
指令,并使用docker-compose中的bind-mount将源代码文件夹挂载到容器/var/www/html
。