今天,我从“Docker Toolbox”切换到“Mac Docker”,因为Docker现在终于可以对我的User
目录(不适用于“Docker Toolbox”)进行写访问了-是的!
但是此更改还包括现在所有容器都在我的本地主机下运行,而不是像以前那样在Docker的IP下运行(例如192.168.99.100
)。
由于我的localhost
默认监听各种端口(80、443,...),并且我不想总是将新创建的端口添加到本地开发域中,因此与标准端口不冲突(例如example.dev:8443
) ,我想知道如何像以前一样运行容器。
我阅读了有关network
的配置信息,并尝试了很多方法(创建一个新的主机网络,公开其前面带有IP的端口,...),但是没有起作用。
我需要哪种配置来使用IP 192.168.99.100
运行我的应用程序容器?到目前为止,这就是我的docker-compose.yml
。
version: '2'
services:
app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- mysql
- redis
- memcached
ports:
- 80:80
- 443:443
- 22:22
- 3000:3000
- 3001:3001
volumes:
- ./app/:/app/
- /tmp/debug/:/tmp/debug/
- ./:/docker/
volumes_from:
- storage
# cap and privileged needed for slowlog
cap_add:
- SYS_PTRACE
privileged: true
env_file:
- etc/environment.yml
- etc/environment.development.yml
mysql:
build:
context: docker/mysql/
dockerfile: MariaDB-10
ports:
- 3306:3306
volumes_from:
- storage
volumes:
- ./data/mysql:/var/lib/mysql
- /tmp/debug/:/tmp/debug/
env_file:
- etc/environment.yml
- etc/environment.development.yml
redis:
build: docker/redis/
volumes_from:
- storage
env_file:
- etc/environment.yml
- etc/environment.development.yml
memcached:
build: docker/memcached/
volumes_from:
- storage
env_file:
- etc/environment.yml
- etc/environment.development.yml
storage:
build: docker/storage/
volumes:
- /storage
最佳答案
您需要为每个服务声明“networks:”:
例如
version: '2'
services:
app:
image: xxxx:xxx
ports:
- "80:80"
networks:
- my-network
mysql:
image: xxxx:xxx
networks:
- my-network
networks:
my-network:
driver: bridge
然后从应用程序配置的侧面,可以使用“mysql”作为数据库服务器的主机名。
关于docker - 如何在自己的网络中运行Docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38304374/