在docker-compose.yml文件中command执行多条命令
command:
- /bin/sh
- -c
- |
bundle config mirror.https://rubygems.org https://gems.ruby-china.org
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
bundle exec rake tmp:cache:clear tmp:sessions:clear RAILS_ENV=production
/docker-entrypoint.sh passenger start
或:
command: /bin/sh -c "cd /www/vest/ && php easyswoole start"
https://segmentfault.com/q/1010000014461396
https://github.com/docker-library/redmine/issues/52
version: '3'
networks:
cm_net:
# driver: bridge
# driver_opts:
# com.docker.network.enable_ipv6: "true"
ipam:
driver: default
config:
- subnet: 172.19.0.0/16
# gateway: 172.17.0.1
services:
cm_mysql57:
image: mysql:5.7
command:
- /bin/sh
- -c
- |
docker-entrypoint.sh mysqld
mysql_upgrade
networks:
cm_net:
ipv4_address: 172.19.0.11
aliases:
- mysql57net
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- "3306:3306"
volumes:
- "/mnt/www:/mnt/www"
cm_phpfpm72:
image: "php:7.2-fpm"
command: docker-php-entrypoint php-fpm
# build:
# context: ./php/
networks:
cm_net:
ipv4_address: 172.19.0.12
aliases:
- phpfpm72net
#在nginx中可使用别名phpfpm72net访问此容器
extra_hosts:
- "api.catmes.test:172.19.0.13"
- "symfony.test:172.19.0.13"
ports:
- "9000:9000"
volumes:
- "/mnt/www:/mnt/www"
# links:
# - cm_mysql57:mysql
depends_on:
- cm_mysql57
cm_nginx:
image: "nginx"
networks:
cm_net:
ipv4_address: 172.19.0.13
aliases:
- nginxnet
# - api.catmes.test
# - symfony.test
#这边自定义两个域名作为别名,方便本地测试时,PHP能正确访问Nginx
ports:
- "80:80"
volumes:
- "/mnt/www:/mnt/www"
- "/mnt/vhost:/etc/nginx/conf.d"
# links:
# - cm_phpfpm72:phpfpm
depends_on:
- cm_phpfpm72
#上面的mysql php nginx 三个服务,必须都加入自定义网络networks
Nginx虚拟主机配置文件:
server {
listen 80;
server_name test.woodsmanfood.com;
root "/mnt/www/test_woodsmanfood_com/public_html";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/homestead.test-error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass phpfpm56net:9000;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#如果你的根目录和php容器的根目录不一样,这里的$document_root需要换成你php下的根目录,不然php就找不到文件了
include fastcgi_params;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
}
给容器指定具体IP时报错,提示必须先配置子网连接的解决方式:
user specified IP address is supported only when connecting to networks with user configured subnets
docker-compose方式,networks参照如下配置:
networks:
cm_net:
# driver: bridge
# driver_opts:
# com.docker.network.enable_ipv6: "true"
ipam:
driver: default
config:
- subnet: 172.19.0.0/16
# gateway: 172.17.0.1
原始的docker命令方式:
创建一个新的局域网虚拟网络:
docker network create --driver bridge --subnet 172.19.0.0/16 cm_net
新增容器时,加入网络参数--network=cm_net
docker run -d --name cm_nginx -p 80:80 --network=cm_net nginx:last
docker-compose自定义网络,固定容器ip地址
https://blog.csdn.net/hechaojie_com/article/details/83625265Docker为网络bridge模式指定容器ip的方法http://www.cppcns.com/jiqiao/fuwuqi/168920.html