docker容器启动go包,报错permission denied
原因:没权限
解决:给权限
command多个命令,先给予权限,然后启动
# dokcer-compose.yml
redis-service:
container_name: redis-service
image: redis
ports:
- 6633:6379
restart: always
go-service:
container_name: go-service
image: redis
environment:
ENV: docker
command: >
sh -c "chmod +x /home/go/go_service_linux &&
/home/go/go_service_linux"
ports:
- 4433:4433
depends_on:
- redis-service
docker-compose必须得有Images
go
包可以直接运行,不需要依赖其他,但是docker-compose
必须指定image
解决: 直接填写其他容器依赖的镜像即可,这样build
的时候就不用下载多余的image
容器之间的访问端口问题
避免出现端口的冲突,所以
docker-compose
对外的端口需要重新声明,比如上面的6633:6379
,容器内redis
的启动端口为6379
,在容器外访问可以通过127.0.0.1:6633
来访问
如果容器之间有相互依赖,比如go-service
连接redis
,代码中的链接为redis-service:6633
,此时会报错拒绝访问
解决:链接改为redis-service:6379
,因为容器内的互相访问走的是内部端口,与端口映射无关