2

PHPに関するマルチコンテナアプリケーションを作成しました。php ファイルを変更すると、ブラウザで変更を確認できます。しかし、css や js などの静的ファイルを変更しても、ブラウザーには変更がありません。以下は、私の Dockerfile コードです。

Dockerfile

`FROM nginx:1.8
`ADD default.conf /etc/nginx/conf.d/default.conf
`ADD nginx.conf /etc/nginx/nginx.conf
`WORKDIR /Code/project/
`RUN chmod -R 777 /Code/project/
`VOLUME /Code/project

default.conf

`server {
listen       80;
server_name  localhost;

root   /Code/project/public;
index  index.html index.htm index.php;
#charset koi8-r;
#access_log  /var/log/nginx/log/host.access.log  main;

location / {
    try_files $uri $uri/ /index.php?$query_string;
}


#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
#
#error_page   500 502 503 504  /50x.html;
#location = /50x.html {
 #   root   /usr/share/nginx/html;
#}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
    try_files $uri /index.php =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass   fpm:9000;
    #fastcgi_pass   127.0.0.1:9000;   
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}
 }

nginx.conf

user  root;
worker_processes  8;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
     worker_connections  1024;
}


http {
   include       /etc/nginx/mime.types;
   default_type  application/octet-stream;

   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

   access_log  /var/log/nginx/access.log  main;

sendfile        on;
#tcp_nopush     on;

keepalive_timeout  65;
client_max_body_size 20m;

#gzip  on;

include /etc/nginx/conf.d/*.conf;
}`

docker-compose.yml

webphp:
    image: index.alauda.cn/chuanty/local_php
    #image: index.alauda.cn/chuanty/local_nginx:snapshot
    ports:
     - "9000:9000"
volumes:
     - .:/Code/project
links:
     - cache:cache
     - db:db
     - es:localhost
extra_hosts:
     - "chaunty.taurus:192.168.99.100"  

cache:
     image: redis
ports:
     - "6379:6379"
db:
  #image: mysql
  image: index.alauda.cn/alauda/mysql
  ports:
      - "3306:3306"
environment:
   MYSQL_ROOT_PASSWORD: chuantaiyidev
   MYSQL_USER: cty
   MYSQL_PASSWORD: chuantaiyidev
   MYSQL_DATABASE: taurus
es:
   image: index.alauda.cn/chuanty/local_elasticsearch
ports:
   - "9200:9200"
   - "9300:9300"

server:
   #image: index.alauda.cn/ryugou/nginx
   image: index.alauda.cn/chuanty/local_nginx:1.1
ports:
   - "80:80"
   - "443:443"
links:
   - webphp:fpm  
volumes_from:
   - webphp:rw
4

3 に答える 3

1

1 つのオプションは、変更された静的ファイルを直接 Docker コンテナーにコピーすることです。

docker cp web/static/main.js container_name:/usr/src/app/static/main.js

  • web/staticホストマシンの静的ディレクトリです
  • main.js変更されたファイルです
  • container_nameで見つけることができるコンテナの名前ですdocker ps
  • /usr/src/app/staticDockerコンテナの静的ディレクトリです

静的ファイルが Docker コンテナのどこにあるかを正確に特定したい場合は、 を使用docker exec -t -i container_name /bin/bashしてそのディレクトリ構造を調べることができます。

于 2016-05-17T18:42:30.853 に答える