我使用以下docker-compose.yml为我的Laravel应用程序运行本地环境。
version: '3'
services:
app:
build:
context: .
dockerfile: .docker/php/Dockerfile
ports:
- 80:80
- 443:443
volumes:
- .:/var/www:delegated
environment:
AWS_ACCESS_KEY_ID: minio_access_key
AWS_SECRET_ACCESS_KEY: minio_secret_key
AWS_BUCKET: Bucket
AWS_ENDPOINT: http://s3:9000
links:
- database
- s3
database:
image: mariadb:10.3
ports:
- 63306:3306
environment:
MYSQL_ROOT_PASSWORD: secret
s3:
image: minio/minio
ports:
- "9000:9000"
volumes:
- ./storage/minio:/data
environment:
MINIO_ACCESS_KEY: minio_access_key
MINIO_SECRET_KEY: minio_secret_key
command: server /data如您所见,我使用minio作为与亚马逊网络服务S3兼容的存储。这很好用,但是当我为一个文件生成一个url (Storage::disk('s3')->url('some-file.txt'))时,显然我得到了一个像这样的http://s3:9000/Bucket/some-file.txt,它在Docker网络之外不能工作。
我已经尝试将AWS_ENDPOINT设置为http://127.0.0.1:9000,但是Laravel无法连接到Minio服务器...
有没有办法配置Docker / Laravel / Minio来生成在Docker网络内外都可以访问的urls?
发布于 2020-04-15 02:17:46
我对这个问题中的解决方案进行了扩展,创建了一个在本地主机和具有可访问dns的服务器上都适用的解决方案。
本地主机解决方案本质上就是上面描述的解决方案。
创建localhost主机映射
sudo echo "127.0.0.1 my-minio-localhost-alias" >> /etc/hosts设置主机名,使用'my-minio- localhost -alias‘作为localhost
export HOSTNAME=my-minio-localhost-alias创建hello.txt
Hello from Minio!创建docker-compose.yml
此合成文件包含以下容器:
minio service
version: '3.7'
networks:
mynet:
services:
minio:
container_name: minio
image: minio/minio
ports:
- published: 9000
target: 9000
command: server /data
networks:
mynet:
aliases:
# For localhost access, add the following to your /etc/hosts
# 127.0.0.1 my-minio-localhost-alias
# When accessing the minio container on a server with an accessible dns, use the following
- ${HOSTNAME}
# When initializing the minio container for the first time, you will need to create an initial bucket named my-bucket.
minio-mc:
container_name: minio-mc
image: minio/mc
depends_on:
- minio
volumes:
- "./hello.txt:/tmp/hello.txt"
networks:
mynet:
s3-client:
container_name: s3-client
image: amazon/aws-cli
environment:
AWS_ACCESS_KEY_ID: minioadmin
AWS_SECRET_ACCESS_KEY: minioadmin
depends_on:
- minio
networks:
mynet:启动minio容器
docker-compose up -d minio在minio中创建bucket并加载文件
docker-compose run minio-mc mc config host add docker http://minio:9000 minioadmin minioadmin
docker-compose run minio-mc mb docker/my-bucket
docker-compose run minio-mc mc cp /tmp/hello.txt docker/my-bucket/foo.txt创建可在扩展底座网络内部和外部访问的预签名URL
docker-compose run s3-client --endpoint-url http://${HOSTNAME}:9000 s3 presign s3://my-bucket/hello.txt发布于 2019-06-17 18:22:20
由于您将主机上的9000端口映射到该服务,因此只要将s3添加到主机文件(Mac/Linux上的/etc/ hosts ),就应该能够通过s3:9000访问它
将此127.0.0.1 s3添加到主机文件中,您应该能够使用https://s3:9000/path/to/file从主机访问s3容器
这意味着您可以从扩展底座网络内部和外部使用s3主机名
发布于 2021-12-01 13:00:08
我没有找到使用docker-compose的minio的完整设置。这就是它:
version: '2.4'
services:
s3:
image: minio/minio:latest
ports:
- "9000:9000"
- "9099:9099"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- storage-minio:/data
command: server --address ":9099" --console-address ":9000" /data
restart: always # necessary since it's failing to start sometimes
volumes:
storage-minio:
external: true在命令部分,我们有地址,这是的API地址,还有console-address,你可以在这里连接到控制台,见下图。使用MINIO_ROOT_USER和MINIO_ROOT_PASSWORD值进行登录。

https://stackoverflow.com/questions/56627446
复制相似问题