我尝试使用共享的外部卷(状态)为docker组成的四个服务。然而,我注意到由于某种原因,我的状态没有被存储。下面是我的docker-compose.yml文件。
version: "3"
services:
plus:
build: ./addition
image: plus_image
volumes:
- state:/state
minus:
build: ./subtraction
image: minus_image
volumes:
- state:/state
multiply:
build: ./multiplication
image: multiply_image
volumes:
- state:/state
divide:
build: ./division
image: divide_image
volumes:
- state:/state
volumes:
state:
external: true
下面是添加应用程序的代码
import sys, os
STATE_DIR = './state'
def add(op1, op2):
result = op1 + op2
return result
def getOperand():
value = 0
if os.path.exists(STATE_DIR + '/value'):
print('exits')
with open(STATE_DIR + '/value', 'r') as f:
if f.readable():
value = int(f.read().strip())
print(value)
return value
def save(value):
print('saivng')
if(not os.path.exists(STATE_DIR)):
os.makedirs(STATE_DIR)
with open(STATE_DIR + '/value', 'w') as f:
f.write(str(value))
if __name__ == '__main__':
numArgs = len(sys.argv)
if(numArgs == 2):
try:
op1 = getOperand()
op2 = int(sys.argv[1])
except:
print('Invalid input!')
exit(1)
else:
print('Usage: python3 <operation>.py op1')
exit(1)
result = add(op1,op2)
save(result)
print(result)
跑步
docker run plus_image 10
在第一次运行时应该输出10。
再次运行相同的命令,它必须打印20(10来自input + 10来自卷)
此项目的目录结构
.
|-division
| |-division.py
| |-Dockerfile
|-subtraction
| |-Dockerfile
| |-subtraction.py
|-multiplication
| |-Dockerfile
| |-multiplication.py
|-addition
| |-Dockerfile
| |-addition.py
|-docker-compose.yml
如果你遇到这样的问题,请帮忙。非常感谢!
2条答案
按热度按时间68bkxrlz1#
尝试
按命令
你从image plus_image运行container,而不使用compose file
通过
你从你的合成文件运行service plus(witch use image plus_image)
h6my8fg22#
使用绝对路径而不是相对路径:
否则,如果要使用相对路径,请验证Dockerfile中使用的
WORKDIR
,然后将共享卷挂载到正确的文件夹中